用R语言对空气质量进行可视化分析
作者:CYY,转载自:探数寻理(wetalkdata)
公众号后台回复“空气质量”下载数据集。
一、广州市空气质量数据介绍
AQI指数(空气质量指数)AQI的指数的取值范围为0~500,其中0~50、51~100、101~200、201~300和大于300,分别对应国家空气质量标准中日均值的 I级、II级、III级、IV级和V级标准的污染物浓度限定数值。
I级:空气质量评估为优,对人体健康无影响;
II级:空气质量评估为良,对人体健康无显著影响;
III级:为轻度污染,健康人群出现刺激症状;
IV级:中度污染,健康人群普遍出现刺激症状;
V级:严重污染,健康人群出现严重刺激症状。
空气质量等级
主要污染物
六项污染物质的浓度:其中PM2.5(粒径小于等于2.5μm的颗粒物,也称细颗粒物),PM10(粒径小于等于10μm的颗粒物,也称可吸入颗粒物),SO2(二氧化硫),NO2(二氧化氮)以及CO(一氧化碳)的浓度全部为24小时平均值,O3浓度值为8小时的滑动平均值。
时间跨度:2015年1月1日至2017年6月30日,共有912条记录。
二、探索性分析
#AQI指数的频数直方图(图2)
aqi_hist <- ggplot(data,aes(x=AQI))+geom_histogram()
两年半的时间内超过600天的AQI指数值在40~80的范围内。
#分年份AQI密度曲线(图3)
date <- ymd(data[,1])
year <- year(date)
年份 <- as.factor(year)
ggplot(data,aes(x=AQI,colour=年份))+geom_freqpoly(aes(y=..density..),size=2)+theme_bw()
从2015年至2016年来看广州的空气质量似乎没有在这段时间内有明显的改善,空气污染的治理仍需努力。
#主要污染物的频数统计(表3),以及分污染等级对主要污染物进行频数统计(表4)
mp_table <- table(data[,10])
level_mp_table <- table(data[,3],data[,10])
当空气质量较好时主要污染物多为NO2,然而当空气污染情况较为严重时主要污染物多为O3,其次为PM2.5。
#AQI指数与各类污染物的矩阵散点图(图6)
scatter <- plot(data[,c(2,4:9)],pch=20)
从上方的矩阵散点图可见,与AQI指数相关关系最为显著的污染物质是PM2.5和PM10
#是否下雨条件下分组AQI密度曲线(图8)
是否下雨 <- data$rain
levels(是否下雨) <- c('否','是')
rain_poly <- ggplot(data,aes(x=AQI,colour=是否下雨))+geom_freqpoly(aes(y=..density..),size=2)+theme_bw()
AQI密度曲线(分是否下雨)
下雨天的AQI指数有的更多比例集中在100以下,相比没有下雨的时候总体水平明显更低
下雨往往对空气质量有改善的作用。
#日均温度-AQI散点图(图9),分是否下雨情况下的日均温度箱线图(图10)
aqi_temp <- ggplot(data,aes(x=temp_mean,y=AQI))+geom_point()+geom_smooth()+theme_bw()
temp_box <- ggplot(data,aes(x=是否下雨,y=temp_mean))+geom_boxplot()+theme_bw()
AQI指数关于日平均温度的散点图
日平均温度的分组箱线图
相比之下,温度的高低对空气质量的好坏并没有显著影响。
下雨天也更多集中在高温时间,而下雨又有改善空气质量的作用
#温度-各类污染物散点图(图11)
t1 <- ggplot(data,aes(x=temp_mean,y=PM2.5))+geom_point()+geom_smooth()+theme_bw()
t2 <- ggplot(data,aes(x=temp_mean,y=PM10))+geom_point()+geom_smooth()+theme_bw()
t3 <- ggplot(data,aes(x=temp_mean,y=SO2))+geom_point()+geom_smooth()+theme_bw()
t4 <- ggplot(data,aes(x=temp_mean,y=CO))+geom_point()+geom_smooth()+theme_bw()
t5 <- ggplot(data,aes(x=temp_mean,y=NO2))+geom_point()+geom_smooth()+theme_bw()
t6 <- ggplot(data,aes(x=temp_mean,O3_8h))+geom_point()+geom_smooth()+theme_bw()
grid.arrange(t1,t2,t3,t4,t5,t6,nrow=2)
各污染物质浓度关于日平均温度的散点图
O3浓度在高温天气下会上升到较高水平,尤其是在温度达到30℃以上的时候。
因此在高温天气下应特别注意高浓度的臭氧污染问题。
#是否下雨-各污染物浓度分组箱线图(图12)
b1 <- ggplot(data,aes(x=是否下雨,y=PM2.5))+geom_boxplot()+theme_bw()
b2 <- ggplot(data,aes(x=是否下雨,y=PM10))+geom_boxplot()+theme_bw()
b3 <- ggplot(data,aes(x=是否下雨,y=SO2))+geom_boxplot()+theme_bw()
b4 <- ggplot(data,aes(x=是否下雨,y=CO))+geom_boxplot()+theme_bw()
b5 <- ggplot(data,aes(x=是否下雨,y=NO2))+geom_boxplot()+theme_bw()
b6 <- ggplot(data,aes(x=是否下雨,y=O3_8h))+geom_boxplot()+theme_bw()
grid.arrange(b1,b3,b3,b4,b5,b5,nrow=1)
每一种污染物质的浓度在下雨天都将有所降低,其中O3,PM2.5,PM10与SO2的降低更为显著。(以图说话,是不是更清晰更乐观!哈!)
公众号后台回复关键字即可学习
回复 R R语言快速入门免费视频
回复 统计 统计方法及其在R中的实现
回复 用户画像 民生银行客户画像搭建与应用
回复 大数据 大数据系列免费视频教程
回复 可视化 利用R语言做数据可视化
回复 数据挖掘 数据挖掘算法原理解释与应用
回复 机器学习 R&Python机器学习入门