R中的3层圆环图

2023-11-23

我正在尝试在 R 中重新创建此图像,但是我无法弄清楚如何将 3 层添加到圆环图 - 我找到的所有内容(例如,webr::PieDonut)只允许2。使用ggplot我也无法重新创建它。

enter image description here

MRE 是:

library(ggplot2)
library(webr)
library(dplyr)

lexicon <- data.frame("Level1" = c(rep("Flavour", 11), rep("Appearance", 4)),
                  "Level2" = c(rep("Misc", 6), rep("Pungent", 5), rep("Colour", 4)),
                  "Level3" = c("Fresh", "Refreshing", "Soapy", "Minty", "Nutty", "Milky", "Peppery", "Sharp", "Horseradish", "Mustard hot", "Spicy", "Colourful"," Fresh Green", "Dark Green", "Bright Green")
)

PieDonut(lexicon, aes(Level1, Level2), title = "Salad Lexicon", showRatioDonut =FALSE, showRatioPie = FALSE)

ggplot(lexicon, aes(Level2, Level3, fill = Level1)) +
  geom_col() +
  scale_fill_viridis_d() +
  coord_polar("y")

虽然 PieDonut 适用于 2 个级别(未显示),但它不允许包含最终级别。 ggplot 方法也不起作用,如下图所示。

enter image description here

如何在 R 中获得这种样式的图表?使用 ggplot 或基本绘图。


我认为一个不错的选择是使用geom_rect经过一些数据处理后。使用填充、颜色和 Alpha 比例有助于提高类别的区分度。我也会用geom_textpath在这里,如果有空间的话,我可能会选择圆周标签:

lexicon %>%
  mutate(top_level = Level1) %>%
  pivot_longer(1:3) %>%
  group_by(name, value) %>%
  mutate(width = n()) %>%
  unique() %>%
  arrange(name) %>%
  group_by(name) %>%
  mutate(ymid = as.numeric(sub("\\D+", "", name)),
         ymax = ymid + 0.5, ymin = ymid - 0.5,
         xmin = c(0, head(cumsum(width), -1)),
         xmax = cumsum(width),
         xmid = (xmax + xmin) / 2) %>%
  ggplot(aes(xmid, ymid, fill = top_level)) +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax,
                alpha = name, color = top_level)) +
  geomtextpath::geom_textpath(aes(y = ymid + 0.25, label = value, 
                                  group = value)) +
  scale_alpha_manual(values = c(1, 0.3, 0.1)) +
  scale_fill_manual(values = c("#cd9900", "#00817e")) +
  scale_colour_manual(values = c("#cd9900", "#00817e")) +
  scale_y_continuous(limits = c(-0.5, 3.6)) +
  coord_polar() +
  theme_void() +
  theme(legend.position = "none")

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中的3层圆环图 的相关文章

随机推荐