2012-06-17 82 views
4

我一直在通过ggplot2学习我的方法,并且我已经使用极坐标和制作饼图,并且遇到了一些麻烦。在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功能结果断裂参数在一个成功的情节,除了与在饼图半径上的编号和刻度线。省略coord_polar(并在scale_y_continuous中保留中断参数)函数会生成一个没有x或y编号或刻度标记的堆积条形图。

我发现了一些涉及更改刻度标记选项的解决方案,这些应该是一个很好的解决方法,但我很好奇为什么我会收到此错误。

附注:我已卸载并重新安装ggp​​lot2以确保我拥有最新版本并且校验和全部匹配。

编辑:为了澄清,我后是这样的:

plot

只是没有饼图上的编号。

+0

GGPLOT2的最新版本不应该在'scale_fill_brewer'中接受缩写'pal',所以我怀疑你有最新版本。 – joran

回答

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一直replaced通过theme

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

谢谢,那是我指的解决方法。我认为在这种情况下,权重和美学的论点是一样的。什么是我百思不得其解了,如果我建一个堆积条形图 ggplot(数据,AES(0,Y =价值,填补=类别))+ scale_x_continuous(符= NA)+ scale_y_continuous(符= NA)+ geom_bar(binwidth = 1) 它工作正常。然后在极坐标系中加上 last_plot()+ coord_polar(theta =“y”) 给我上面的错误。看起来奇怪的是,改变坐标会导致这个错误。 – tkmckenzie

+0

@tkmckenzie我无法重现那些错误,但是再次如上所述,我实际上使用的是最新版本,而我强烈怀疑您不是。 – joran

+0

我只是看了一下,确保我已安装最新版本,而且您是正确的,我使用的是R 2.13,所以我升级并解决了这个问题。谢谢你的帮助! – tkmckenzie