本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于DataCharm ,作者宁海涛

前言

今天的推文教程使用geopandas进行空间图表的绘制(geopandas空间绘图很方便,省去了很多的数据处理过程,而且也完美衔接matplotlib,学习python 空间绘图的小伙伴可以看下啊),具体为空间气泡图的绘制,主要涉及的内容如下:

geopandas geojson数据格式读取并可视化展示

单独添加散点大小图例图层

adjustText 库解决文本重叠问题

geopandas geojson数据操作

这里我们选择的为香港地图的geojson 文件数据,此类文件可在DAtAV 地图选择器进行下载。下载所得的文件名为香港.json,可视化效果如下:

数据读取

使用geopandas 的read_file()方法就可很方便地进行数据读取,代码如下:

hk_file = r"F:\DataCharm\商业艺术图表仿制\香港地图可视化\香港特别行政区.json"

hk = geopandas.read_file(hk_file)

更多geopandas 读取数据方法,可以参看geopandas官网进行学习了解。

数据可视化展示

在读取完数据之后,我们可以直接使用geopandas的plot() 方法进行绘制,代码如下(做了简单的颜色设置):

fig, ax = plt.subplots(figsize=(10,8),dpi=200)

hk_map = hk.geometry.plot(ax=ax,fc="#CCEBEB",ec="#009999",lw=1)

ax.text(.91,0.05,'\nVisualization by DataCharm',transform = ax.transAxes,

ha='center', va='center',fontsize = 8)

ax.axis('off') # 移除坐标轴

plt.savefig('hk_charts_pir.png',width=8,height=8,

dpi=900,bbox_inches='tight',facecolor='white')

结果如下:

区名文本添加:在读取的数据结果中有name 列为对应的区名,使用hk.geometry.representative_point() 方法计算出其代表性 点的经纬度信息用于绘制文本位置,结果如下:

再通过使用ax.text()方法添加文本即可,代码如下:

for loc, label in zip(hk.geometry.representative_point(),hk.name):

ax.text(loc.x,loc.y,label,size=13,color="#0DCFE3")

结果如下:

添加气泡散点数据

由于数据的经纬度是直接基于高德地图进行解析的,导致存在部分数据经纬度信息出错,我们使用pandas进行简单的数据筛选,具体就不再展示,后面会推出系列教程推文,数据预览如下:

这里主要使用红色框中的数据进行绘制,即使用scatter()方法加合理设置散点大小即可,代码如下:

for x,y,price in zip(scatter_se.lon,scatter_se.lat,scatter_se['实用单价']):

hk_map.scatter(x,y,s=price/500,color='#FFEB3B',alpha=.5,ec='k',lw=.1)

经过一些定制化设置效果如下:

气泡图例添加

这里我们不是直接基于数据进行图例的生成,而是单独进行其他图层的绘制进行图例生成,这样做的好处就是可以更加自由定制所需图例的颜色和大小,涉及的代码如下:

#这里进行单独的图例添加

ax.scatter([], [], c='#FFEB3B', s=6000/500,

label='6000 - 10000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=10000/500,

label='10000 - 30000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=30000/500,

label='30000 - 50000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=50000/500,

label='50000 - 90000', edgecolor='black',lw=.5)

#图例定制化设置

legend = ax.legend(frameon=False,ncol=4,loc='lower right',title='实用单价',bbox_to_anchor=(1, -.06),

fontsize=9)

legend.get_title().set_color('#ffffff')

for text in legend.get_texts():

text.set_color("#ffffff")

注意下代码的后半部分,这是对matplotlib 图例设置的定制化设定,也适用于其他图例。绘图完整代码如下:

fig, ax = plt.subplots(figsize=(10,8),dpi=200,facecolor='#323332',edgecolor='#323332')

ax.set_facecolor('#323332')

hk_map = hk.geometry.plot(ax=ax,fc="#292200",ec="gray",lw=1,alpha=.8)

#使用默认的text添加文本导致文本重叠

for loc, label in zip(hk.geometry.representative_point(),hk.name):

ax.text(loc.x,loc.y,label,size=11,color="#0DCFE3")

for x,y,price in zip(scatter_se.lon,scatter_se.lat,scatter_se['实用单价']):

hk_map.scatter(x,y,s=price/500,color='#FFEB3B',alpha=.5,ec='k',lw=.1)

ax.axis('off') # 移除坐标轴

#这里进行单独的图例添加

ax.scatter([], [], c='#FFEB3B', s=6000/500,

label='6000 - 10000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=10000/500,

label='10000 - 30000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=30000/500,

label='30000 - 50000', edgecolor='black',lw=.5)

ax.scatter([], [], c='#FFEB3B', s=50000/500,

label='50000 - 90000', edgecolor='black',lw=.5)

#图例定制化设置

legend = ax.legend(frameon=False,ncol=4,loc='lower right',title='实用单价',bbox_to_anchor=(1, -.06),

fontsize=9)

legend.get_title().set_color('#ffffff')

for text in legend.get_texts():

text.set_color("#ffffff")

#添加必要的文本:这里title也是采用相同方法

ax.text(.5,1.05,"香港在售二手房分布图",transform = ax.transAxes,color="white",weight='bold',size=20,

ha='center', va='center')

ax.text(.5,.985,'数据来源:菜J学Python',transform = ax.transAxes,

ha='center', va='center',fontsize = 10,color='white')

ax.text(.91,-.07,'\nVisualization by DataCharm',transform = ax.transAxes,

ha='center', va='center',fontsize = 8,color='white')

plt.savefig('hk_charts.png',width=8,height=8,

dpi=900,bbox_inches='tight',facecolor='#323332')

#ax.set_axisbelow(True)

plt.show()

可视化效果:

adjustText 库解决文本重叠问题

大家可能发现:结果图中文本较集中,可能对阅读造成不便,我们这里只用adjustText 包进行解决,这里给出文本添加的代码,其他步骤一样:

from adjustText import adjust_text

# 使用adjustText修正文字重叠现象

new_texts = [ax.text(loc.x,loc.y,label,size=13,color="#0DCFE3") for loc, label in \

zip(hk.geometry.representative_point(),hk.name)]

adjust_text(new_texts,

only_move={'text': 'xy'},)

可视化结果如下:

python作中国地图背景气泡图_Python数据可视化:香港地图、房价可视化,绘制气泡图...相关推荐

  1. python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

    exce表格中怎么制作中国地图背景数据气泡图 exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况,该怎么设置中国地图气泡图表呢?下面我们就来看看详 ...

  2. python作中国地图背景气泡图_Excel图表中制作中国地图背景气泡图的操作方法

    在一些商务PPT,经常能够看见以中国或世界地图作为背景的图表,并且使用气泡图反映数据的大小,如何实现这样的气泡图.今天,学习啦小编就教大家在Excel图表中制作中国地图为背景气泡图的操作方法. Exc ...

  3. python作中国地图背景气泡图_excel怎么制作中国地图背景效果的气泡图?

    在一些商务PPT,经常能够看见以中国或世界地图作为背景的图表,并且使用气泡图反映数据的大小,如下图所示.该怎使用excel制作气泡图效果呢?下面我们就来看看详细的教程. 软件名称:Microsoft ...

  4. python获取地图上经纬度_Python获取各大地图平台经纬度数据,哪家的数据最准确?...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 不知道大家会在什么场合使用地图 ...

  5. python问题中国五城市pm2.5_数据之路- 中国五城市PM2.5数据解读

    PM2.5大家一定都不会陌生,特别是在北京生活的小伙伴们.PM2.5是指大气颗粒物(PM),其直径小于或等于2.5微米.在环境科学中,特指悬浮在空气中的固体颗粒或液滴,是空气污染的主要来源之一. 本文 ...

  6. python饼状图颜色一样_python数据可视化:折线图、条形图、饼状图显示

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. matplotlib是Python的一个强大的2D图形绘制库,使用需要安装 ...

  7. python三维图形渲染 地图_从三维数据到彩色地图

    前言:我看过these,但我不能从答案中找出如何制作情节.另外,我是python和matplotlib的新手.在 我有一个表格的数据文件X Y Z 0.05 1 z 0.10 1 z ... ... ...

  8. python中噪音是什么意思_Python数据噪音

    数据处理涉及以各种格式处理数据,例如合并,分组,连接等,以便分析或准备将其与另一组数据一起使用. python具有内置函数功能,可将这些争议方法应用于各种数据集以实现分析目标. 在本章中,我们将看几个 ...

  9. python 数据库表结构转为类_Python数据科学实践 | 数据库1

    大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧.本期内容主要由智亿同学与政委联合推出. 数据库永远是数据管理上最值得使用的工具.而把所收集的大量数据放入数据库之后再处理是数据科学实 ...

最新文章

  1. 确认过眼神(*╹▽╹*),这就是大家想要的BCH
  2. elasticsearch ——id字段说明,内部是_uid
  3. python编程入门教学下载-Python编程从入门到实践的PDF教程免费下载
  4. 会计记忆总结之二:会计要素和会计科目
  5. 如何发布你的Android应用程序
  6. flex label 换行
  7. 认清一个人,看这四点就够了
  8. java与微信小程序通讯_java与微信小程序实现websocket长连接
  9. wieshark导出ftp文件_【FTP】Wireshark学习FTP流程
  10. python编程 个人所得税计算器
  11. rust+mysql+prep+exec_Rust + Flutter 高性能的跨端尝试
  12. 超过2t硬盘分区_大于2T的磁盘怎么分区呢?
  13. Chromium Embedded Framework (CEF) 介绍
  14. sony android mp3播放器,高音质与流媒体兼具,索尼 NW-ZX500 安卓音乐播放器评测
  15. 以太网(802.3)帧格式
  16. No compiler is provided in this environment. Perhaps you are run
  17. Javascript屏蔽右键的方法
  18. 云时代架构系列经典技术书籍
  19. 让自己不烦心的心理暗示
  20. py218-基于Python+django的化妆品美妆销售商城网站#毕业设计

热门文章

  1. PPP协议身份验证PAP和CHAP
  2. 2016级移动应用开发在线测试13-Location、Sensor Network
  3. 小程序自定义底部菜单栏
  4. Android 一个String字符串 设置不同的颜色值
  5. Linux 文件管理-文件内容-读取工具-【cattac】连接多个文件并打印到标准输出
  6. 设置浏览器屏蔽百度推广广告
  7. 搭建简单windows版NAS
  8. 苹果系统怎么链接共享服务器,mac连接共享服务器设置
  9. 询问HTG:升级Xbox 360 HDD,头痛免费的圣诞灯修复和剥离Kindle DRM
  10. 一个网站做渗透测试对企业的安全性建议