减少ggplot2饼图周围的边距。

3

我在文档中包含了一个饼图,其他的图表都是使用ggplot2制作的,所以我希望使用ggplot2来保持图表的一致性。然而,这个饼图没有延伸到边缘。

dat <- structure(list(y = c(0.0714285714285714, 
                            0.0714285714285714, 
                            0.107142857142857, 
                            0.160714285714286, 
                            0.25, 
                            0.339285714285714), 
                      x = structure(c(1L, 3L, 4L, 5L, 6L, 2L), 
                                    .Label = c("1 to 5", "6", "7", "8", "9", "10"), 
                                    class = "factor")), 
                 class = "data.frame", 
                 .Names = c("y", "x"), row.names = c(NA, -6L))

ggplot(dat, aes(x = factor(1), y = y, fill = factor(x))) + 
  geom_bar(width = 1, stat = "identity") + 
  coord_polar(theta  = "y") + 
  theme_grey()

我将使用theme_void(); 我已经使用theme_grey来说明这一点:饼图的边缘没有延伸到面板的足够远。如何使饼的直径等于(或非常接近)面板的宽度?修改width=1scale_x_discrete(expand = c(0,0))都没有效果。 coord_polar的参数似乎也没有提供任何线索。

enter image description here


2
这是一个好问题;我还没有看到过任何没有至少那么大间隙的ggplot2饼图。也许是plot.margin?不过,所有的统计学家和数据可视化专家现在都强烈建议不再使用饼图。已经有很多重要的研究表明,它们比其他视觉效果更难以解释,但相对于使用的空间,传达的信息相对较少。无论如何,如果有答案,可能是其中之一http://docs.ggplot2.org/0.9.3/theme.html。 - Hack-R
感谢您提供的数据可视化建议,但这不是关于图表设计的问题。 - Hugh
1
当然没问题。这就是为什么我评论了主题选项,可能解决你的问题。不过,我必须评论一下图表设计,因为当我尝试寻找解决方案时,我遇到了几个页面上说同样的事情,这也是我的数据可视化总监教给我们的东西,所以我认为你应该知道,使用饼图已经被那些专业研究此领域的人们认为是一个错误。 - Hack-R
1
plot.margin = margin(0,0,0,0) 没有效果。 - Hugh
1个回答

0

这并没有真正解决你的问题,但它确实将饼图区域扩大到面板的初始大小。

ggplot(dat, aes(x = factor(1), y = y, fill = factor(x))) + 
geom_bar(width = 1, stat = "identity") + 
coord_polar(theta  = "y") + 
guides(fill=guide_legend(override.aes=list(colour=NA))) +
theme(panel.grid.major = element_blank(),
      panel.grid.minor = element_blank(),
      axis.text.x=element_blank(),
      plot.margin = unit(c(-.75,-.75,-.75,-.75),"cm")
      )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接