在ggplot2中制作没有坐标轴数字/刻度的饼图

4
我一直在学习ggplot2,现在学会了使用极坐标和制作饼图,但遇到了一些问题。
我想制作一个没有轴标号或刻度的饼图。我有一段代码样例,我认为应该可以工作:
data = data.frame(Category = c("A", "B", "C", "D"), Value = runif(4))
ggplot(data, aes(0, weight = Value, fill = Category)) +
  scale_x_continuous(breaks = NA) +
  scale_y_continuous(breaks = NA) +
  geom_bar(binwidth = 1) +
  coord_polar(theta = "y") +
  scale_fill_brewer(pal = "Set1")

这段代码给我报错:
Error in if (ends_apart < 0.05) { : argument is of length zero

在scale_y_continuous函数中省略breaks参数会导致成功绘制图表,但是在饼图的半径上会有编号和刻度标记。省略coord_polar(并保留scale_y_continuous中的breaks参数)函数会导致堆叠条形图而没有x或y编号或刻度标记。
我找到了一些解决方案,涉及更改刻度标记选项,这些应该是可以解决问题的,但我很好奇为什么会出现这个错误。
顺便说一下:我已经卸载并重新安装了ggplot2,以确保我拥有最新版本,并且所有校验和都匹配。
编辑:澄清一下,我想要的是像这样的东西: plot 除了饼图上没有编号。

ggplot2的最新版本不应该在scale_fill_brewer中接受缩写pal,因此我怀疑你是否有最新版本。 - joran
1个回答

8
我想这就是你想要的内容:

我认为这就是你需要的:

ggplot(data,aes(x = factor(0),y = Value,fill = Category)) + 
    geom_bar(stat = "identity",position = "fill") +
    scale_fill_brewer(palette = 'Set1') + 
    coord_polar(theta = "y") + 
    opts(axis.ticks = theme_blank(),
             axis.text.y = theme_blank(),
             axis.text.x = theme_blank())

注意: 从0.9.2版本开始,opts已被theme所取代:(参考链接)

+ theme(axis.ticks = element_blank(), 
        axis.text.y = element_blank(),
        axis.text.x = element_blank()) 

谢谢,那就是我所提到的解决方法。我相信在这种情况下,权重和y美学参数的作用是相同的。让我感到困惑的是,如果我使用以下代码构建堆积条形图ggplot(data, aes(0, y = Value, fill = Category)) + scale_x_continuous(breaks = NA) + scale_y_continuous(breaks = NA) + geom_bar(binwidth = 1)它可以正常工作。然后加入极坐标last_plot() + coord_polar(theta = "y")就会出现上述错误。改变坐标系会导致这个错误似乎有些奇怪。 - tkmckenzie
@tkmckenzie 我无法再现这些错误,但正如我在上面提到的,我实际上正在使用最新版本,而我强烈怀疑你没有这样做。 - joran
我刚才检查了一下,确保我安装的是最新版本,你说得对,我使用的是 R 2.13,所以我升级了,这个问题已经解决了。感谢你的帮助! - tkmckenzie

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