最近忙的厉害,产量下降的有点严重,感谢各位还没取关的小伙伴儿。
一周前更新了一篇数据地图上的气泡散点图的内容,不知怎地,这段时间就是跟地图死磕上了,今天还是数据地图,不过是在数据地图上呈现条形图、柱形图。
之前的一篇因为有现成的作图包支持,geom_scatterpie函数不用花费太大力气就解决了数据地图上的气泡散点图问题。
可是到目前为止我还没有发现支持对应坐标位置的条形图、柱形图,这一篇是参考了知乎上大神提供的思路。
加载包:
|
|
导入地图素材及省会城市经纬度数据
|
|
新建三个指标,2015年和2016年的某经济度量指标(虚构)N15、N16和环比增长率Ratio。
|
|
合并后的数据结构如下,随即选取了10个城市的14、15年度某项经济指标(虚构)以及同比增长率。
ggplot的现有图层图形中是没有直接根据点坐标生成条形图、柱形图的,所以这里我们只能曲线救国,使用线条图和误差线来进行模拟。
首先来画底图:
|
|
接下来使用geom_linerange函数(也就是条线图函数)进行各个坐标点的模拟柱形绘制。
画出14年的指标值:
|
|
再叠加一次16年的指标值
|
|
接下来我们来对已经塑造好的双柱条形图进行美化操作,
|
|
其实最初在网上看到该图(大概是刘万祥老师的博客,在此感谢老师的启发),他的做法是使用geom_errbar图层函数,也就是误差线图层函数,其实理念是一致的。这里给出原方法。
12345678 ggplot()+geom_polygon(aes(x=long, y=lat,group=group),data=china_map, fill="white", colour="grey60")+geom_errorbar(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",width=0,alpha=0.8)+geom_errorbar(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",width=0,alpha=0.8)+geom_text(aes(x=jd,y=wd-0.6,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+theme_nothing()+annotate("text", x=105, y=52, label="● 2014", color= "#5B88A0", size=8)+annotate("text", x=105, y=49, label="● 2015", color= "#FB882C", size=8)
其实如果能换个思路,使用geom_errorh函数,想必一定了以做出横向的条形图。
|
|
以上思路仅供大家大家参考,就像伟大的哈德利.威科姆所说的一样,ggplot只是给你了一个发挥想象力的空间,无拘无束的发挥想象力,总能创造出令人惊讶的作品。
联系方式:
wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
qq交流群:[魔方学院]298236508
个人简介:
杜雨
财经专业研究僧;
伪数据可视化达人;
文科背景的编程小白;
喜欢研究商务图表与地理信息数据可视化,爱倒腾PowerBI、SAP DashBoard、Tableau、R ggplot2、Think-cell chart等诸如此类的数据可视化软件,创建并运营微信公众号“数据小魔方”。
Mail:578708965@qq.com
备注信息:
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。