r - 如何在R中的ggplot2中填充整个面板中的饼图?

标签 r ggplot2

我想使用 R 中的 ggplot2 和 geom_col 来创建一个仅显示饼图圆的饼图,以便整个绘图只是饼图圆,每边都没有任何空间。下面是我的代码示例:

library('ggplot2')
df = data.frame(group=c("a","b","c"), 
                value=c(0.2,0.4,0.4))

p=ggplot(df,aes(x="", y=value, fill=group)) + 
  geom_col(position="fill") + 
  coord_polar(theta = "y") +
  guides(fill=F) +
  theme(
    panel.background = element_rect(fill = "grey", colour = NA), 
    #"grey" is just to show the panel area
    plot.background = element_rect(fill = "transparent", colour = NA),
    panel.grid = element_blank(),
    panel.border = element_blank(),
    plot.margin = unit(c(0, 0, 0, 0), "null"),
    panel.spacing = unit(0, "null"),
    axis.ticks = element_blank(),
    axis.text = element_blank(),
    axis.title = element_blank(),
    axis.line = element_blank(),
    legend.position = "none",
    axis.ticks.length = unit(0, "null"),
    axis.ticks.margin = unit(0, "null"),
    legend.margin = margin()
  )

下图是它创建的图。我想要的是让圆圈的顶部和底部位于灰色区域的顶部和底部边缘。我该怎么做?

Figure

最佳答案

我认为这是在 ggplot2 中硬编码的。您可以通过在控制台中输入 trace(ggplot2:::r_rescale, edit = TRUE) 来深入了解底层内容(请参阅 this GH page 底部未导出的 r_rescale 的函数定义) )并将重新缩放值从 0.4 更改为 0.5

编辑函数后重新运行代码的结果:

plot

完成后,运行untrace(ggplot2:::r_rescale),一切将恢复正常。


附:需要注意的是,如果您指定 theme_void() (覆盖默认的 theme_grey()),则可以跳过代码中的所有主题规范。

关于r - 如何在R中的ggplot2中填充整个面板中的饼图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64362209/

相关文章:

r - 未加权旋转表

r - 按组计算连续值对的平均值

r - 在默认浏览器中直接打开 Shiny App

删除 facet_wrap 图中的 "floating"轴标签?

r - 奇怪的 geom_path 行为

r - 从 ggplot2 geom_raster() 生成分色矩形

在另一个具有重复 block 名称的 Rmarkdown 文档中仅运行来自一个 Rmarkdown 文档的代码

r - 如何在 ggplot2 中绘制(复杂的)堆叠条形图,而无需复杂的手动数据聚合

r - ggplot2 为分面图中的两个 Y 轴分别添加单独的图例

快速计算R中的二重积分