在 ggplot2 r 中操纵 geom_bar 和 coord_polar 的描绘

Posted

技术标签:

【中文标题】在 ggplot2 r 中操纵 geom_bar 和 coord_polar 的描绘【英文标题】:manipulate delineation of geom_bar and coord_polar in ggplot2 r 【发布时间】:2019-02-06 22:36:10 【问题描述】:

我正在使用 ggplot 中的 polar_coord 构建同心圆图表,我需要去掉一条特定的线。这是代码和情节:

df <- data.frame(A=letters[1:12],
                 B=c(rep("Dim_1",4),rep("Dim_2",4),rep("Dim_3",4)),
                 C=c(rep("Ind_1",2),rep("Ind_2",2),rep("Ind_3",2),rep("Ind_2",2),rep("Ind_5",2),rep("Ind_6",2)))

ggplot(df,aes(factor(1),fill=C))+
  geom_bar(width = 1,colour="black")+
  coord_polar()+
  scale_fill_manual(values = c("#FFFFFF","#CCCCCC","#CCCCCC","#999999","#999999"))

如何消除从圆心到顶部的线?由于此极坐标图是由条形图 (geom_bar) 制成的,因此另一种提问方式是,如何去除每个条形底部的边框,而不是侧面或顶部的边框?

【问题讨论】:

Hackish & 肮脏,但没有摆弄geom_rect,可能会过度绘制填充颜色ggplot(df,aes(x=factor(1),fill=C))+ geom_bar(width = 1, color = "black")+ coord_polar()+ geom_col(aes(x=0.5, y=1, color=C), width=0) 谢谢。这是一个潜在的解决方案,但 geom_col 中的颜色需要使用 B 作为比例。我无法通过在 geom_col 中将 C 替换为 B 来实现... 【参考方案1】:

看看以下内容是否适合您?注释代码中的解释:

ggplot(df, aes(factor(1), fill = C)) +
  geom_bar(width = 1, colour = NA) +                       # hide all outlines in geom_bar
  stat_count(aes(yintercept = cumsum(rev(..count..))),     # add only the top line for each
             geom = "hline") +                             # bar in the stack
  coord_polar() +

  # optional: add black outline to the fill legend
  scale_fill_manual(values = c("#FFFFFF","#CCCCCC","#CCCCCC","#999999","#999999"),
                    guide = guide_legend(override.aes = list(color = "black")))

【讨论】:

太棒了。谢谢。

以上是关于在 ggplot2 r 中操纵 geom_bar 和 coord_polar 的描绘的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化时避免geom_bar对x轴进行排序实战:直接对因子变量进行提前排序后再进行可视化使用scale_x_discrete函数限定因子顺序

如何从 df 的不同列中获取闪避的 geom_bar (ggplot2)

ggplot2:使用填充geom_bar指定颜色时缺少图例

ggplot2:带有自定义 y 限制的 geom_bar

如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?

使用 ggplot2 将颜色列添加到 geom_bar 图