ggplot barplot 按组给出百分比

Posted

技术标签:

【中文标题】ggplot barplot 按组给出百分比【英文标题】:ggplot barplot given percentage by group 【发布时间】:2021-12-24 06:12:04 【问题描述】:

我正在尝试建立一个已经给出百分比的条形图。我认为这是一个基本问题,但我无法在互联网上找到任何东西。我的数据是这样的:

我试图打印的情节是这样的:

考虑到overRetailbelowRetail,每组条形(即每年)的条形都需要达到 100%。 我没有任何代码要显示:我最接近的是不计算百分比,而是使用绝对值。 我想知道:我正在寻找的真的是一个条形图吗?也许其他类型的情节会更适合我想要展示的内容。 提前致谢!

【问题讨论】:

请使用dput()而不是图像来分享您的数据。谢谢。 【参考方案1】:

使用重新调整的数据可能会更容易绘制您想要绘制的图。考虑每年一排及以下/以上,而不是每年一排。

# Setup Data
require(tidyverse)

releaseDate <- 2014:2021
belowRetail <- c(24.20635, 25.09804, 35.63403, 31.06996, 27.76025, 28.59097, 31.00559, 30.89888)
overRetail <- c(75.79365, 74.90196, 64.36597, 68.93004, 72.23975, 71.40903, 68.99441, 69.10112)
retail <- tibble(releaseDate = releaseDate, belowRetail = belowRetail, overRetail = overRetail)

您可以使用 dplyr 中的 pivot_longer 来重塑数据。

retail <- pivot_longer(data = retail, cols = -releaseDate, names_to = "name") 

然后,您可以使用 geom_bar,在美学 (aes) 中指定名称。另请注意,必须添加 position = "fill" 和 stat = "identity"。第一个选项使所有条形图为 100%,第二个选项使用数据值而不是默认计数。

ggplot(data = retail) +
  geom_bar(aes(x = releaseDate, y = value, fill = name), position = "fill", stat = "identity")

这是它的样子。

Here is a useful source that you might want to consult.

【讨论】:

以上是关于ggplot barplot 按组给出百分比的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(设置坐标轴为百分比以显示缺失值的比例)

ggplot:在百分比图上添加频率图

R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签

R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签

R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化其中一个Y轴显示为百分比

按组占总数的百分比