我一直在通过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函数中的break参数会导致绘图成功,除了饼图半径上的编号和刻度标记。省略coord_polar(并在scale_y_continuous中保留break参数)会导致堆积条形图没有x或y编号或刻度标记。
我发现了一些涉及更改刻度标记选项的解决方案,这些应该是一个很好的解决方法,但我很好奇为什么我会收到此错误。
作为旁注:我已经卸载并重新安装ggplot2以确保我拥有最新版本并且校验和都匹配。
编辑:澄清一下,我所追求的是:
除了饼图上没有编号外。
答案 0 :(得分: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
replaced完成:
+ theme(axis.ticks = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_blank())