简体   繁体   English

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

[英]How do I make stacked barplot in R utilising three columns, I want to use the barplot() function

I want a stacked barplot in R with year as my x-axis, percentage as my y-axis, and landuse as a colour fill.我想要一个 R 中的堆叠条形图,以年份为 x 轴,百分比为 y 轴,landuse 作为颜色填充。 My data is given below我的数据如下

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

You can use ggplot2 package to plot stacked bars.您可以使用ggplot2包来绘制堆叠条形图。 Pay attention to that Year variable should be of factor type.注意Year变量应该是factor类型。 See the code below:请参阅下面的代码:

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")

Output:输出:

在此处输入图片说明

PS If you want to use barplot you'll need to go through plotting value matrix creation, legend, colours etc (dozen lines of code). PS 如果您想使用barplot您需要完成绘制值矩阵的创建、图例、颜色等(数十行代码)。 ggplot2 gives it to you by default.默认情况下, ggplot2将它提供给您。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM