在ggplot2中制作没有轴编号/刻度的饼图
Posted
技术标签:
【中文标题】在ggplot2中制作没有轴编号/刻度的饼图【英文标题】:Making pie charts with no axis numbering/ticks in ggplot2 【发布时间】:2012-06-19 20:56:25 【问题描述】:我一直在通过 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,以确保我拥有最新版本并且校验和都匹配。
编辑:澄清一下,我所追求的是:
plot
饼图上没有编号的除外。
【问题讨论】:
最新版本的ggplot2不应该接受scale_fill_brewer
中的缩写pal
,所以我怀疑你有最新版本。
【参考方案1】:
我想这就是你所追求的:
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())
【讨论】:
谢谢,这就是我所指的解决方法。我相信重量和 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 我无法重现这些错误,但话又说回来,正如我上面提到的,我实际上使用的是最新版本,而我强烈怀疑你不是。 我只是看了一下以确保我安装了最新版本,你是对的,我使用的是 R 2.13,所以我升级了这个问题并得到了解决。感谢您的帮助!以上是关于在ggplot2中制作没有轴编号/刻度的饼图的主要内容,如果未能解决你的问题,请参考以下文章