漂亮的圆形图。我不确定对数据分析师本身是否有额外的好处,但如果能吸引决策者的注意,那对我来说就是额外的价值。
然而,用coord\_polar()或偶尔发现的ggplot2中的coord\_radar()构建它们可能很难。我发现的两个主要问题是,极坐标的变化会使你的路径弯曲成圆形,而且雷达无法与geom_bin结合使用来填充背景。
这就是为什么我通常在笛卡尔坐标系统中使用。更像是一种数学解决方案。映射您的数据和绘图需求,使其最终成为圆环。作为一个额外的好处,我还发现它的构建/加载速度更快。对我来说很重要,因为我让它们在 Shiny Apps 中交互。
我在示例中使用了 mtcars 数据。该图显示了集合中的 12 辆汽车:
- 背景中的气缸。4、6 和 8 缸的浅色、中色和深色。
- 用蓝色标出每辆车每加仑的里数。
这篇文章是逐步展示如何将所需的元素添加到圆形图中。很多东西可能可以改进,请随时发表评论。
我使用前 12 辆汽车,有一列包含行名。
add_rownames\[1:12,\]
绘制数据映射
为了映射我想绘制的任何列的值,我创建了函数。它基本上会检查您想要绘制多少个变量并为 x 和 y 值绘制正弦曲线。
lev <- levels num <- length dir <- rep dir_ <- map_dbl interp data <- mutate_
存储映射数据以映射所有标签的 mpg 变量。
# 数据点 rotate_data
我想展示绘图范围数据,所以我伪造了一系列 qsec 数据。基本上,您为每辆车(标签)上的 qsec 生成一个具有多个值(行)的数据框。
#编造一些范围数据 bind_rows rotate_data
使用polygon 绘制范围,使用 path 和 point 绘制 mpg 值。
lim <- max # 用自己的数据和美学来绘制每一层的图案 ggplot() + geom_polygon+ geom_point+ theme+ coord_equal
径向线
我猜想要的网格是由带圆圈的径向向外线组成的。创建 x、xend、y 和yend 数据点以绘制其间的线段。
r <- data_frame %>% mutate r$xed <- 0 r$yed <- 0
#用自己的数据和美学来绘制每一层的图案
ggplot() + geom_segment + geom_polygon+ geom_point + ylim + xlim + theme+ coord_equal
标签
为您旋转的变量添加文本标签。
label <- levels ggplot() + geom_segment + geom_polygon + geom_path + geom_point + geom_text+ theme + coord_equal
绘制圆圈
要绘制圆圈,我将使用带有填充选项的 circle。
t <- seq d <- data.frame if(fed==TRUE) { # #在中心添加一个点,使整个 "饼 "被填满 d <- rbind } return(d)
网格圆圈和标签
圆形网格线是通过多次调用 circle 并将所有点存储在数据框中来构建的。
cregrd <- data_frame crld <- cili %>% mutate poties <- bind_rows loics$lv <- as.factor
可以通过多种方式添加圆形标签。但是为了简单地将所有轴文本和轴标签设置为blank,我构建了一个可以使用 text 绘制的数据框。
c <- data_frame cl <- cl\[x <= max,\] ggplot() + geom_segment + geom_path+ geom_text+ geom_polygon + geom_point + geom_text + xlim + theme+ coord_equal