R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化
卖萌控的博客
点击这里进入电脑版页面!体验更好
R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化
2024-2-17 萌小白


原文链接:http://tecdat.cn/?p=24896



原文出处:拓端数据部落公众号






漂亮的圆形图。我不确定对数据分析师本身是否有额外的好处,但如果能吸引决策者的注意,那对我来说就是额外的价值。



然而,用coord_polar()或偶尔发现的ggplot2中的coord_radar()构建它们可能很难。我发现的两个主要问题是,极坐标的变化会使你的路径弯曲成圆形,而且雷达无法与geom_bin结合使用来填充背景。



这就是为什么我通常在笛卡尔坐标系统中使用。更像是一种数学解决方案。映射您的数据和绘图需求,使其最终成为圆环。作为一个额外的好处,我还发现它的构建/加载速度更快。对我来说很重要,因为我让它们在 Shiny Apps 中交互。



我在示例中使用了 mtcars 数据。该图显示了集合中的 12 辆汽车:




这篇文章是逐步展示如何将所需的元素添加到圆形图中。很多东西可能可以改进,请随时发表评论。



我使用前 12 辆汽车,并希望有一列包含行名。



add_rownames[1:12,]



绘制数据映射



为了映射我想绘制的任何列的值,我创建了函数。它基本上会检查您想要绘制多少个变量并为 x 和 y 值绘制正弦曲线。




  1. lev <- levels


  2. num <- length


  3. dir <- rep


  4. dir_ <- map_dbl


  5. interp


  6. data <- mutate_



存储映射数据以映射所有标签的 mpg 变量。




  1. # 数据点


  2. rotate_data



我想展示绘图范围数据,所以我伪造了一系列 qsec 数据。基本上,您为每辆车(标签)上的 qsec 生成一个具有多个值(行)的数据框。




  1. #编造一些范围数据


  2. bind_rows


  3. rotate_data



使用polygon 绘制范围,使用 path 和 point 绘制 mpg 值。




  1. lim <- max


  2. # 用自己的数据和美学来绘制每一层的图案


  3. ggplot() +


  4. geom_polygon+


  5. geom_point+


  6. theme+


  7. coord_equal






径向线



我猜想要的网格是由带圆圈的径向向外线组成的。创建 x、xend、y 和yend 数据点以绘制其间的线段。




  1. r <- data_frame %>%


  2. mutate


  3. r$xed <- 0


  4. r$yed <- 0


  5. #用自己的数据和美学来绘制每一层的图案


  6. ggplot() +


  7. geom_segment +


  8. geom_polygon+


  9. geom_point +


  10. ylim + xlim +


  11. theme+


  12. coord_equal






标签



为您旋转的变量添加文本标签。



label <- levels




  1. ggplot() +


  2. geom_segment +


  3. geom_polygon +


  4. geom_path +


  5. geom_point +


  6. geom_text+


  7. theme +


  8. coord_equal






绘制圆圈



要绘制圆圈,我将使用带有填充选项的 circle。




  1. t <- seq


  2. d <- data.frame


  3. if(fed==TRUE) { # #在中心添加一个点,使整个 "饼 "被填满


  4. d <- rbind


  5. }


  6. return(d)



网格圆圈和标签



圆形网格线是通过多次调用 circle 并将所有点存储在数据框中来构建的。




  1. cregrd <- data_frame


  2. crld <- cili %>%


  3. mutate


  4. poties <- bind_rows


  5. loics$lv <- as.factor



可以通过多种方式添加圆形标签。但是为了简单地将所有轴文本和轴标签设置为blank,我构建了一个可以使用 text 绘制的数据框。




  1. c <- data_frame


  2. cl <- cl[x <= max,]


  3. ggplot() +


  4. geom_segment +


  5. geom_path+


  6. geom_text+


  7. geom_polygon +


  8. geom_point +


  9. geom_text + xlim +


  10. theme+


  11. coord_equal






背景



使用 circle,您还可以轻松构建圆部分,您可以使用 Filled = TRUE 参数填充该部分。有一点 -1/num 偏移以使该部分正确对齐。在这里,您提出了您要为其着色的因子变量。当然,您还可以更改代码以根据变量更改每个条的“高度”。




  1. num <- length


  2. levels <- rev


  3. tart <- seq


  4. bg <- data_frame


  5. mutate


  6. bgdta <- tdf


  7. bgdta$lv <- as.factor



中心圆



细节不多,但您可能想添加一些中心圆。




  1. lm <- max


  2. ggplot() +


  3. geom_polygon+


  4. geom_segment +


  5. geom_path+


  6. geom_text +


  7. geom_polygon+


  8. geom_polygon+


  9. geom_path +


  10. geom_point +


  11. geom_text +


  12. ylim + xlim +


  13. theme +


  14. coord_equal








发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容