4

我用 ggplot2 做了一个分面饼图,如下所示:

qplot(x=factor(1), data=mtcars, fill=factor(cyl)) + 
    geom_bar(width=1) +  
    coord_polar(theta="y") + 
    facet_grid(~gear)

在此处输入图像描述

但由于所有饼图都共享 y 轴刻度,因此其中一些饼图并未覆盖整个圆圈。我试过了facet_grid(~gear, scales="free")但它不起作用。

我怎样才能得到所有饼图的完整圆圈?

4

2 回答 2

13

我想你只是想要position = 'fill'

ggplot(mtcars,aes(x = factor(1),fill=factor(cyl))) + 
    facet_wrap(~gear) + 
    geom_bar(width = 1,position = "fill") + 
    coord_polar(theta="y")

以供将来参考,来自 的详细信息部分geom_bar

默认情况下,出现在同一位置的多个 x 将通过 position_stack 相互堆叠。如果您希望它们左右闪避,请参阅 position_dodge。最后, position_fill 通过堆叠条形然后拉伸或挤压到相同的高度来显示每个 x 处的相对比例。

于 2013-08-30T16:30:19.127 回答
0

如果您正在寻找另一种方便的方法来执行此操作,您可以查看ggstatsplot包,包括条形图和饼图。

# setup
set.seed(123)
library(ggstatsplot)

# pie chart
ggpiestats(mtcars, gear, cyl)

#> Warning in stats::chisq.test(x = data$main, y = data$condition, correct =
#> FALSE, : Chi-squared approximation may be incorrect

# bar chart
ggbarstats(mtcars, gear, cyl)
#> Warning in stats::chisq.test(x = data$main, y = data$condition, correct =
#> FALSE, : Chi-squared approximation may be incorrect

reprex 包(v0.3.0)于 2019 年 6 月 23 日创建

于 2019-06-23T15:21:45.590 回答