首页 > 解决方案 > 2 系列 barplot ggplot2 或 Openair

问题描述

我正在尝试创建空气质量数据的条形图。我想要 X 轴上的监测站点,以及在每个站点相对于 y 轴测量的 2 种污染物的浓度,例如在伦敦站点,我测量了 5 ng/m3 的锑(系列 1)和 10 ng/m3 的钡(系列 2)。所以 y 轴就是浓度 (ng/m3)。

我已经搜索过了,如果第二个系列是可以通过颜色定义的定性属性,那么获得第二个系列的唯一示例似乎有效,所以你仍然只有一个栏而不是两个。

此外,这些示例似乎涉及手动在代码中输入数据框,但我有很多数据并想导入文件。我已成功从 csv 导入,但看不到如何在代码中引用它。

Openair 似乎只使用 timeProp 绘制必须与 X 轴上的日期相关的堆积条形图。

对不起,我对这样的编程非常缺乏经验,我希望我的问题是有道理的。任何帮助表示赞赏!

标签: rggplot2openair

解决方案


我认为你需要这样的东西:

library(ggplot2)

data <- data.frame(cite= c('london','madrid','barcelona','london','madrid','barcelona'),
               contaminent = c('Argon','Argon','Argon','Barium','Barium','Barium'),
               Concentration= runif(6)*5)

ggplot() + geom_col(data = data,aes(x = cite,y=Concentration,fill=contaminent))

编辑:

现在假设您的数据名称为 my_data 并按如下方式组织:第一列名称 cites 与 cites 名称,然后每一列的名称是一个污染,其中包含每个 cite 的污染浓度值。那么您用于管理数据并在 ggplot 中使用的代码可能是:

library(ggplot2)
new_data <- data.frame(cites = rep(my_data$cites,ncol(my_data)-1),
                       contaminent_type= rep(colnames(my_data)[2:ncol(my_data)],each=nrow(my_data)),
                       Concentration= as.vector(my_data[,2:ncol(my_data)]))

ggplot() + geom_col(data = new_data,aes(x = cites,y=Concentration,fill=contaminent_type))

推荐阅读