Python-geoplot 空间核密度估计图绘制

DataCharm 2021-02-22 13:02:17
Python 空间 python-geoplot geoplot 密度估计


由于对空间数据可视化的喜欢,可能本公众号的推文也以此类图较多,当然也受到小伙伴的喜欢。在R语言ggplot2以及其拓展包能够较为简单的实现各类空间可视化作品的绘制,在寻找Python进行空间绘制包的同时,也发现如geopandas、geoplot等优秀包,今天的推文就简单使用geoplot库绘制空间核密度估计图,涉及的知识点如下:

  • geoplot库pointplot()函数绘制空间点图
  • geoplot库kdeplot()函数绘制空间核密度估计图

所使用的数据为全国PM2.5站点数据和中国地图文件。

pointplot()绘制空间点图

geoplot库就相当于seaborn 对matplotlib一样,实现了较多绘图函数的封装,使你可以使用较少的代码绘制较精美的图表,更多详细内容,大家可以直接去官网进行查看:Geoplot官网我们只介绍本推文需要的绘图函数,首先,我们绘制空间散点图, 数据预览如下:

再使用geopandas包对相关处理,具体代码如下:

scattergdf = gpd.GeoDataFrame(
scatter, geometry=gpd.points_from_xy(scatter.经度, scatter.纬度),
crs="EPSG:4326")

这样就可以把数处理成geoplot 绘图所需的数据格式了,绘图代码具体如下:

plt.rcParams['font.family'] = ["Times New Roman"]
fig,ax = plt.subplots(figsize=(8,5),dpi=200)
proj = projection=gcrs.AlbersEqualArea(central_latitude=40, central_longitude=104)
ax = plt.subplot(projection=proj,frameon=False)
gplt.pointplot(
scattergdf, projection=proj,
s=4,
hue="PM2.5",
cmap='Spectral_r',
edgecolor='black', linewidth=0.2,
legend=True,
ax=ax,
)
gplt.polyplot(china_main, linewidth=.3,ax=ax)
gplt.polyplot(china_nine, linewidth=.3,ax=ax)
plt.title("Geoplot Test",fontsize = 20)
plt.text(.88,.02,'\nVisualization by DataCharm',transform = ax.transAxes,
ha='center', va='center',fontsize = 5,fontweight="bold")

代码较为简单,我们直接给出可视化结果,如下:

kdeplot()绘制空间核密度估计图

由于geoplot的高度封装,我们直接使用kdeplot()函数进行绘制,具体代码如下:

fig,ax = plt.subplots(figsize=(8,5),dpi=200)
proj = projection=gcrs.AlbersEqualArea(central_latitude=40, central_longitude=104)
ax = plt.subplot(projection=proj)
gplt.kdeplot(
scattergdf,
cmap = "Spectral_r",
clip = china_main.geometry,
projection=proj,
levels=12,
thresh=.0005,
shade=True,
ax=ax,
)
gplt.polyplot(china_main, zorder=1,facecolor="none",linewidth=.3,ax=ax)
plt.title("Geoplot Test2",fontsize = 18)
plt.text(.85,.25,'\nVisualization by DataCharm',transform = ax.transAxes,
ha='center', va='center',fontsize = 5,fontweight="bold")

就完成了空间核密度估计的可视化绘制,所涉及的绘图函数相对简单,大家看看官网教程就可以快速掌握。

总结

Python-geoplot库对一些空间图表可以较为迅速的绘制出结果,可以说是相对简单,但到实践过程中,也发现一些问题(完全自己绘制过程中的感悟啊,可能存在个人原因啊):

  1. 由于高度封装,相对某些绘图元素(图例等)定制化设置可能较难。
  2. 官网文档介绍较少,对刚开始学习的小伙伴可能不是很友好。
  3. 安装较为麻烦(除非能够科学上网,否则即使安装成功,也会存在小问题)

本文分享自微信公众号 - DataCharm(shujumeili) ,作者:宁海涛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2020-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[DataCharm]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1790274

  1. Python 3 entry, see this is enough
  2. 华为大佬打造的400集Python视频学起来,学完万物皆可爬
  3. 400 episodes of Python video created by Huawei boss
  4. django之csrf_exempt解决跨域请求的问题
  5. CSRF of Django_ Exempt solves the problem of cross domain requests
  6. 1.7 万 Star!一个简单实用的 Python 进度条库
  7. 17000 stars! A simple and practical Python progress bar library
  8. Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租
  9. Python crawler: setting cookie to solve website interception and crawling ant short rent
  10. Python-Net编程
  11. Python net programming
  12. 学习Python数学英语基础重要吗?Python教程!
  13. Is it important to learn the basics of math and English in Python!
  14. Python数据分析常用库有哪些?Python学习!
  15. What are the common libraries for Python data analysis? Learn Python!
  16. win 创建python虚拟环境
  17. Creating Python virtual environment with win
  18. In order to automatically collect B station barrage, I developed a tool in Python
  19. 用Python编程语言来实现阿姆斯特朗数的检查
  20. Using python programming language to check Armstrong number
  21. Python中的解决中文字符编码的问题
  22. Solving the problem of Chinese character coding in Python
  23. Translation: practical Python Programming 02_ 01_ Datatypes
  24. Installation and use of Python and tensorflow in win10 environment (Python version 3.6, tensorflow version 1.6)
  25. Python series 46
  26. Linux安装Python3
  27. 【python接口自动化】- 正则用例参数化
  28. Python RestFul Api 设计
  29. filecmp --- 文件及目录的比较│Python标准库
  30. Installing python3 on Linux
  31. [Python] Matplotlib 圖表的繪製和美化技巧
  32. (資料科學學習手札108)Python+Dash快速web應用開發——靜態部件篇(上)
  33. 翻譯:《實用的Python程式設計》02_01_Datatypes
  34. 【python接口自动化】- 正则用例参数化
  35. 翻译:《实用的Python编程》02_02_Containers
  36. 两年Java,去字节跳动写Python和Go
  37. [Python interface automation] - regular use case parameterization
  38. Python restful API design
  39. 翻译:《实用的Python编程》02_02_Containers
  40. 两年Java,去字节跳动写Python和Go
  41. 翻译:《实用的Python编程》02_02_Containers
  42. Python基于粒子群优化的投资组合优化研究
  43. ubuntu部署django项目
  44. 兩年Java,去位元組跳動寫Python和Go
  45. 翻譯:《實用的Python程式設計》02_02_Containers
  46. 这样学习Python,爷爷都学会了!超简单Python入门
  47. [Python] 基于 jieba 的中文分词总结
  48. 【python】递归听了N次也没印象,读完这篇你就懂了
  49. [Python] 基于 jieba 的中文分词总结
  50. 人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式
  51. [Python] 基於 jieba 的中文分詞總結
  52. Python属于后端开发还是前端开发?Python入门!
  53. 【python】递归听了N次也没印象,读完这篇你就懂了
  54. 一天快速入门python
  55. 学习Python对年龄有没有要求?30岁可以吗?
  56. 清华教授!12小时整理的最全Python教程(文末无偿分享)
  57. Filecmp -- comparison of files and directories
  58. Drawing and beautifying skills of [Python] Matplotlib chart
  59. Python + dash rapid web application development static components
  60. Translation: practical Python Programming 02_ 01_ Datatypes