温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言可视化中ggplot绘制中心密度辐射图是怎样的

发布时间:2021-11-22 10:20:51 来源:亿速云 阅读:165 作者:柒染 栏目:大数据

R语言可视化中ggplot绘制中心密度辐射图是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

因为在ggplot2中一直没有看到好的关于密度辐射图(或者称它为热力辐射图,就是那种PowerMap中可以通过颜色色度探查区域指标分布密度的图表类型)的合适解决方案,最近在看github官网上ggmap的介绍帖,看到作者在ggmap函数中嵌套了geom_polygon图层并并使用fill=..level..参数和stat="density_2d"来来制作类似的热度辐射图。

我就突发奇想,如果不是通过ggmap而是通过ggplot函数是否也可以呢,果然也是可以出效果的,先将方法介绍如下:

首先需要加载如下包:

library(ggplot2)      

library(plyr)         

library(maptools) 

library(ggmap) 

接下来导入两个数据集:

其中一个是中国省级边界轮廓图,早期关注过数据小魔方的用户大概都知道,我曾经共享过一个名为rstudy的文件包(我在刘万祥老师的公众号里发现的,现在应该也还可以获取),如果手上没有数据可以添加魔方学院的QQ群,在群共享里查找R语言资料。(共享文件比较多,可能需要找一阵子)

另一个是之前在讲解REmap热度辐射图时用过的城市价值指标数据集,推送后会共享在魔方学院的QQ群里。

导入数据集:

china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")  #地图数据 

china_map1 <- fortify(china_map)                   #转换为数据框

data<- read.csv(file="D:\\R\\map\\MoveChart\\cityvaluetop10.csv",header=T)  #城市指标数据

R语言可视化中ggplot绘制中心密度辐射图是怎样的

因为这里使用地图仅仅是作为底图用作定位信息,可以说是陪衬,所以无需对地图和城市指标进行合并。

以下是图表的正式生成过程:

1、画底图:

p<-ggplot()+

geom_polygon(data=china_map1,aes(x=long,y=lat,group=group),fill="#005A32",col="white")

R语言可视化中ggplot绘制中心密度辐射图是怎样的

2、添加热度图层

p<-p+geom_polygon(data=data,aes(x=lon,y=lat,fill = ..level..), stat="density_2d", alpha = .3, color = NA)+coord_map("polyconic") 

R语言可视化中ggplot绘制中心密度辐射图是怎样的

3、调整热度图层

p<-p+scale_fill_gradient2( low = "white",mid="yellow", high = "red")

R语言可视化中ggplot绘制中心密度辐射图是怎样的

4、清楚冗余元素

p<-p+theme_nothing()

R语言可视化中ggplot绘制中心密度辐射图是怎样的

5、可以给以上热图添加散点辅助观测

p<-p+geom_point(data=data,aes(x=lon,y=lat),col="white")

R语言可视化中ggplot绘制中心密度辐射图是怎样的

6、当然,你也可以给三点指定城市的指标数据使其变成气泡图

p<-p+geom_point(data=data,aes(x=lon,y=lat,size=prob),col="white")+scale_size_area(max_size=6)

#记得清除掉第5步,即从第四步开始

R语言可视化中ggplot绘制中心密度辐射图是怎样的

至于实际的数据标签,指标名称和区域名称,酌情添加,但是针对地图类图表,数据展示到位即可,不建议添加太多标签,影响美观性。

针对本图表类型,核心参数是第二个geom_polygon()中的fill = ..level..和stat="density_2d"统计变换,使得多边形图转换成为二维水平密度图,但是至今我还没有搞懂里面的算法是什么样的,只能大概模仿出来,至于怎么用,看大家自由发挥了,效果跟真正的热力辐射图还是有些差别,但是勉强能用。

总结下,用到的所有代码如下:

ggplot()+

geom_polygon(data=china_map1,aes(x=long,y=lat,group=group),fill="#005A32",col="white")+

geom_polygon(data=data,aes(x=lon,y=lat,fill = ..level..), stat="density_2d", alpha = .3, color = NA)+

coord_map("polyconic") +

geom_point(data=data,aes(x=lon,y=lat,size=prob),col="white")+

scale_size_area(max_size=6)+

scale_fill_gradient2( low = "white",mid="yellow", high = "red")+

theme_nothing()  #这一句清空主题的代码是ggmap包中的,必须加载才能用

感兴趣的小伙伴儿可以移步去github官网上搜索ggmap官方介绍,里面使用ggmap调用谷歌地图做的热度图,效果很棒。

看完上述内容,你们掌握R语言可视化中ggplot绘制中心密度辐射图是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI