如何使用三列在 R 中制作堆叠条形图,我想使用 barplot() 函数

Posted

技术标签:

【中文标题】如何使用三列在 R 中制作堆叠条形图,我想使用 barplot() 函数【英文标题】:How do I make stacked barplot in R utilising three columns, I want to use the barplot() function 【发布时间】:2019-09-17 16:30:02 【问题描述】:

我想要一个 R 中的堆积条形图,其中年份作为我的 x 轴,百分比作为我的 y 轴,土地使用作为颜色填充。我的数据如下

Year Percentage                    LandUse
1  2015       49.8                Agriculture
2  2012       51.2                Agriculture
3  2009       50.2                Agriculture
10 2015       22.5                    fishing
11 2012       21.4                    fishing
12 2009       21.9                    fishing
19 2015       14.7   services and residential
20 2012       16.0   services and residential
21 2009       17.1   services and residential
28 2015        0.8       mining and quarrying
29 2012        0.7       mining and quarrying
30 2009        0.7       mining and quarrying
37 2015        0.4  water and waste treatment
38 2012        0.5  water and waste treatment
39 2009        0.4  water and waste treatment
46 2015        0.8 Industry and Manufacturing
47 2012        0.8 Industry and Manufacturing
48 2009        0.9 Industry and Manufacturing

【问题讨论】:

【参考方案1】:

您可以使用ggplot2 包来绘制堆积条形图。注意Year 变量应该是factor 类型。 请看下面的代码:

df <- structure(list(Year = c(2015L, 2012L, 2009L, 2015L, 2012L, 2009L, 
2015L, 2012L, 2009L, 2015L, 2012L, 2009L, 2015L, 2012L, 2009L, 
2015L, 2012L, 2009L), Percentage = c(49.8, 51.2, 50.2, 22.5, 
21.4, 21.9, 14.7, 16, 17.1, 0.8, 0.7, 0.7, 0.4, 0.5, 0.4, 0.8, 
0.8, 0.9), LandUse = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 5L, 
5L, 5L, 4L, 4L, 4L, 6L, 6L, 6L, 3L, 3L, 3L), .Label = c("Agriculture", 
"fishing", "Industry_and_Manufacturing", "mining_and_quarrying", 
"services_and_residential", "water_and_waste_treatment"), class = "factor")), class = "data.frame", row.names = c("1", 
"2", "3", "10", "11", "12", "19", "20", "21", "28", "29", "30", 
"37", "38", "39", "46", "47", "48"))

df$Year <- factor(df$Year)

library(ggplot2)
ggplot(df, aes(Year, Percentage, fill = LandUse)) +
  geom_bar(stat = "identity")

输出:

附: 如果您想使用barplot,您需要完成绘制值矩阵创建、图例、颜色等(数十行代码)。 ggplot2默认给你。

【讨论】:

以上是关于如何使用三列在 R 中制作堆叠条形图,我想使用 barplot() 函数的主要内容,如果未能解决你的问题,请参考以下文章

与 Svg 垂直堆叠条形图反应(无第三方库)

如何使用 geom_text 在堆叠条形图的比例尺上添加频率或数字?

R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战

如何从具有不同数量和索引顺序的三组字典中制作包含三列的条形图?

R堆叠条形图与组

Tableau 图表大全2.0之堆叠条形图制作