是否有在保持颜色的同时向 ggplot 饼图添加模式的功能?

Posted

技术标签:

【中文标题】是否有在保持颜色的同时向 ggplot 饼图添加模式的功能?【英文标题】:Is there a function to add patterns to a ggplot pie chart whilst keeping colours? 【发布时间】:2021-12-02 15:55:30 【问题描述】:

我希望创建一个包含相对丰富组的饼图,但是,然后将组拆分为子组,例如第 1 组分为第 1a 组、第 1b 组、第 1c 组等,第 2 组等。我有 30 个组,其中包含不同级别的子组,例如有些组只有 2 个子组,有些组有 4 个。

我想将一个组的饼图着色为相同颜色,但子组为不同的图案。例如第一组的基色都是红色,但组 1a 是纯色,组 1b 是带条纹的红色,组 1c 是带点的红色。

只是想知道是否有人可以告诉我获得除图案外还有颜色的饼图的最佳方法。到目前为止我发现的任何材料都只是用于将不同的图案作为填充而不是操纵颜色,例如gg模式。

非常感谢您的帮助!请在下面找到我的饼图代码。

bpwc<- ggplot(data, aes(x="", y=rel_abund, fill=Order_group))+
  geom_bar(width = 1, stat = "identity", color="black")

piewc <- bpwc + coord_polar("y", start=0)
piewc +theme_void()+facet_wrap(depth~replicate)+scale_fill_manual(values =c(glasbey()))```





【问题讨论】:

您的代码不容易使用,因为我们不知道data 是什么。请参考:***.com/q/5963269/11117265 【参考方案1】:

ggpattern 包似乎能够执行您所描述的操作。我不确定你为什么拒绝它(?)。

library(ggpattern)
#> Loading required namespace: memoise
library(ggplot2)
library(colorspace)

df <- expand.grid(
  group = as.character(1:3),
  subgroup = as.character(1:3)
)
df$count <- rpois(nrow(df), 5)

ggplot(df, aes(1, count / sum(count), group = group)) +
  geom_col_pattern(aes(fill = group,
                       pattern = subgroup,
                       pattern_fill = after_scale(darken(fill, 0.5))),
                   pattern_colour = NA) +
  geom_col(colour = "black", fill = NA) + # black trim
  scale_pattern_discrete(
    choices = c("none", "stripe", "circle")
  ) +
  coord_polar(theta = "y") +
  theme_void()

由reprex package (v0.3.0) 于 2021 年 10 月 14 日创建

【讨论】:

以上是关于是否有在保持颜色的同时向 ggplot 饼图添加模式的功能?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中使用 ggplot2 向饼图图例添加值

R语言ggplot2可视化:可视化饼图分面图并在图中添加数据标签

ggsubplot (ggplot2) 中的饼图

ggplot饼图选择轴刻度

在ggplot中向条形图添加图例

ggplot2中散点图的图例(无颜色)