玩转ggplot2小教程,空气质量可视化

前言

这篇小教程主要介绍ggplot2的一些作图技巧,包括一些主题theme的一些细节设定,虽然ggtheme包括许多的主题,但有时我们也想要自己设置效果,让自己的图看起来与众不同

导入所需的包

library(data.table)
library(ggplot2)
library(leafletCN)

本文主要用到的包就是这几个。

站点分布绘图

首先我们对站点数据进行分析。

geo <- fread('geo_clean.csv')

一个有七个字段,大概长这样子。

玩转ggplot2小教程,空气质量可视化_第1张图片

我想看看站点的大致分布,这时我们需要一个底图,由于我不想导入外部文件了,我用了 郎大为leafletCN中的地图。

filePath_p <- system.file("geojson/china.json",package = "leafletCN")
province <- read.geoShape(filePath_p)

接下来就可以绘制我们的分布地图了。

ggplot()+
  geom_point(data = geo, aes(lon,lat,color=province))+
  geom_path(data=province, aes(long,lat,group=group))+
  coord_map()

玩转ggplot2小教程,空气质量可视化_第2张图片

默认画出来的图是这样的,总觉得不太好看,于是我们就可以设置自己的 主题了,我个人喜欢暗色调背景。

mytheme <- function(){
  theme(text = element_text(family = 'STHeiti',color='gray80'), # 字体及颜色
        axis.text = element_blank(), # 去掉坐标刻度
        axis.title = element_blank(), #去掉坐标标题
        plot.background = element_rect(fill="gray20"),
        panel.background = element_rect(fill="gray20"),
        panel.border = element_rect(fill=NA, color="gray20", size=0.5, linetype="solid"), # 设置所有背景色
        panel.grid = element_blank(), 
        axis.line = element_blank(), 
        axis.ticks = element_blank(), # 去掉辅助线及坐标线
        legend.background = element_rect(fill = 'gray20'),
        legend.key = element_rect(fill = 'gray20', color = 'gray20')) # 图例背景色
}

重新绘图,我们将地图线条设为亮色调,看起来比较舒服。

ggplot()+
  geom_point(data = geo, aes(lon,lat,color=province),size=0.6)+
  geom_polygon(data = province, aes(long,lat,group=group),
               fill='transparent',color='gray80',size=0.1)+
  coord_map()+
  mytheme()
玩转ggplot2小教程,空气质量可视化_第3张图片

站点数量绘图

有了以上设置样式,我想知道每个省的站点数量,用柱状图来表示。

# 统计站点数目(此处为国控站点数目)
bar <- as.data.frame(table(geo$province))
names(bar) <- c('province','number')
ggplot(data = bar,aes(province,number,fill=province))+
  geom_bar(stat = 'identity')+
  geom_text(aes(label=number, vjust = -0.4, hjust = 0.5),color='gray80')+
  theme(plot.background = element_rect(fill="gray20"),
        panel.background = element_rect(fill="gray20"),
        panel.border = element_rect(fill=NA, color="gray20", size=0.5, linetype="solid"),
        panel.grid = element_blank(),
        axis.line.x = element_line(color = 'gray80'),
        axis.line.y = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_line(color = 'gray80'),
        axis.ticks.y = element_blank(),
        axis.text = element_text(family = 'STHeiti',color = 'gray80',angle = 90),
        axis.text.y = element_blank(),
        legend.position = 'none')
玩转ggplot2小教程,空气质量可视化_第4张图片

空气aqi绘图

知道了以上主题设置,我们导入空气aqi数据,就可以绘制出以下精彩图形。

aqidata <- fread('cityaqi_2015.csv')

首先来看每一天的空气aqi状况,我们筛选出几个典型城市。这里用了一个渐变色viridis,需要倒入viridis包,这里的主题仿造上面设置即可。

ggplot(tmp,aes(date,aqi,color=aqi)) + 
  geom_point(alpha=0.6,size=0.6)+
  scale_x_date(date_breaks = "4 month",
               date_labels = '%m-%d') +
  facet_wrap(~region,nrow = 2,labeller = label_value)+
  scale_color_viridis()+ 
  xlab('date') + ylab('') +mytheme()
玩转ggplot2小教程,空气质量可视化_第5张图片

可以看出北京,石家庄,武汉等城市空气质量不好的天数远高于其他城市,普遍集中在1月份和12月份,我们还可以做一个热力图来观察下。

热力图

ggplot(hotdata[hotdata$type=='AQI',], aes(province, month, fill = value)) + 
  geom_tile(colour="white", size=0.1, stat="identity") + 
  scale_fill_viridis(option="D",name='AQI') +
  scale_y_continuous(expand = c(0,0),breaks = 1:12,labels = c('一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')) +
  ggtitle('2015全国各省市AQI月度热力图') +
  mytheme()
玩转ggplot2小教程,空气质量可视化_第6张图片

后记

最后留一张空间分布给大家去实现,感受ggplot2的可创造性。更多作图细节及源代码可关注我的公众号‘曲图工作室’。

你可能感兴趣的:(玩转ggplot2小教程,空气质量可视化)