【问题标题】:Adding values and percentages to pie chart向饼图添加值和百分比
【发布时间】:2018-10-11 04:38:33
【问题描述】:

我正在尝试制作一个饼图,以分解 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

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

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

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

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

    【讨论】:

    • 此类情节的最佳解决方案之一!谢谢!
    【解决方案2】:

    使用ggstatsplot 包函数ggpiestats (https://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 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多