在饼图中添加值和百分比

时间:2018-10-11 04:38:34

标签: r ggplot2

我正在尝试制作一个饼状图,以分解3个不同类别之间的值划分(是的,我知道堆叠的条形图会更好,但是我对此没有选择)。我想出了如何在堆叠的条形图上使用+ coord_polar制作饼图,并隐藏刻度/轴标签的方法,但是我需要在饼图的每个切片中包括该实际值以及总计值,以及我不确定该怎么做。这是我正在使用的代码(正在使用的数据是机密的,因此我已将其替换为一些模拟数据)。

library(ggplot2)

simuldata <- data.frame(Category = LETTERS[1:3], 
                        value = c(196, 149,127))

piechart <- ggplot(simuldata, aes(x="", y=value, fill=Category)) +
  geom_bar(width=1, stat="identity") +
  coord_polar("y", start=0) +
  xlab("") +
  ylab("Value") +
  theme(axis.text.x=element_blank(),axis.ticks.x=element_blank())

piechart

Which produces this chart

我该如何将值和百分比添加到每个切片中?

2 个答案:

答案 0 :(得分:2)

这与ggstatsplot包函数ggpiestatshttps://cran.r-project.org/web/packages/ggstatsplot/vignettes/ggpiestats.html)十分直接:

# data
simuldata <- data.frame(Category = LETTERS[1:3],
                        value = c(196, 149, 127))

# plot
ggstatsplot::ggpiestats(data = simuldata,
                        main = Category,
                        counts = value)

reprex package(v0.2.1)于2018-10-11创建

答案 1 :(得分:1)

您可以添加一个geom_text()层,将每个要堆叠的标签放置在中间并垂直对齐:

piechart +
  geom_text(aes(label = paste0(value,
                               " (",
                               scales::percent(value / sum(value)),
                               ")")),
            position = position_stack(vjust = 0.5))

plot