ggplot 条形图按组给出百分比

ggplot barplot given percentage by group

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

我要打印的情节是这样的:

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

重塑数据后,您想要制作的情节可能会更容易。考虑每年一行,而不是每年一行,并且 below/over.

# 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.