在 ggplot2 中绘制饼图

Plotting pie charts in ggplot2

我想绘制一个合适的饼图。但是,该站点之前的大部分问题都来自 stat = identity。我怎样才能绘制一个像图 2 一样的普通饼图,其角度与 cut 的比例成正比?我正在使用来自 ggplot2 的 diamonds 数据框。

ggplot(data = diamonds, mapping = aes(x = cut, fill = cut)) + 
    geom_bar(width = 1) + coord_polar(theta = "x")

图 1

ggplot(data = diamonds, mapping = aes(x = cut, y=..prop.., fill = cut)) + 
    geom_bar(width = 1) + coord_polar(theta = "x")

图2

ggplot(data = diamonds, mapping = aes(x = cut, fill = cut)) + 
    geom_bar()

图3

我们可以先算出每个cut组的百分比。我为此任务使用了 dplyr 包。

library(ggplot2)
library(dplyr)

# Calculate the percentage of each group
diamonds_summary <- diamonds %>%
  group_by(cut) %>%
  summarise(Percent = n()/nrow(.) * 100)

之后,我们就可以绘制饼图了。 scale_y_continuous(breaks = round(cumsum(rev(diamonds_summary$Percent)), 1))是根据累计百分比设置坐标轴标签。

ggplot(data = diamonds_summary, mapping = aes(x = "", y = Percent, fill = cut)) + 
  geom_bar(width = 1, stat = "identity") + 
  scale_y_continuous(breaks = round(cumsum(rev(diamonds_summary$Percent)), 1)) +
  coord_polar("y", start = 0)

这是结果。

这个怎么样?

ggplot(diamonds, aes(x = "", fill = cut)) + 
  geom_bar() +
  coord_polar(theta = "y")

它产生:

https://imgur.com/a/leSmIPT