当前位置: 首页 > news >正文

【数据可视化-92】使用 Pyecharts 绘制乡镇街道级地图:以安徽省黄山市休宁县为例(我的老家)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【数据可视化-92】使用 Pyecharts 绘制乡镇街道级地图:以安徽省黄山市休宁县为例(我的老家)

    • 一、引言
    • 二、准备工作
      • 2.1 获取 GeoJSON 数据
      • 2.2 生成数据
    • 三、绘制地图
      • 3.1 初始化地图
      • 3.2 渲染地图
    • 四、完整代码
    • 五、运行结果
      • 4.1 地图展示
      • 4.2 数据可视化
    • 五、总结


一、引言

  在数据可视化中,地理信息的展示是极为重要的一环。Pyecharts 提供了强大的地图绘制功能,但默认的地图库仅支持到区县级别。当我们需要绘制乡镇街道级别的地图时,就需要自定义地图数据。本文将详细介绍如何使用 Pyecharts 绘制乡镇街道级地图,以安徽省黄山市休宁县(我的老家)为例,提供完整的代码和分析。

二、准备工作

2.1 获取 GeoJSON 数据

  GeoJSON 是一种基于 JSON 的地理信息数据格式,用于表示地理特征和空间数据。我们需要获取休宁县的 GeoJSON 数据。可以从公开的地理信息数据平台(如 GeoJSON.io)下载或通过其他合法途径获取。

  假设我们已经获取了休宁县的 GeoJSON 数据,并保存为 休宁县.geojson 文件。

2.2 生成数据

  我们需要从 GeoJSON 文件中提取数据,并生成适合 Pyecharts 使用的数据格式。以下是生成数据的代码:

import json
import random
from pyecharts import options as opts
from pyecharts.charts import Map# 读取 GeoJSON 文件
with open('休宁县.geojson', 'r', encoding='utf-8') as f:json_data = json.load(f)# 生成随机数据
datas = [(properties['properties']['name'], random.randint(1, 100)) for properties in json_data['features']]

三、绘制地图

3.1 初始化地图

  我们需要使用 Pyecharts 的 Map 组件来绘制地图,并通过 add_js_funcs 方法注册自定义的 GeoJSON 数据。

# 初始化地图
map_chart = (Map(init_opts=opts.InitOpts(width='800px', height='800px', bg_color='#0d0735')).add_js_funcs("echarts.registerMap('emap', {});".format(json_data)).add(series_name="",maptype="emap",data_pair=datas,is_roam=False,is_map_symbol_show=False,).set_global_opts(title_opts=opts.TitleOpts(title="休宁县乡镇街道级地图",subtitle="数据来源:自定义 GeoJSON",item_gap=5,pos_left='center',pos_top='3%',title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_size=16),),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(pos_right='10%',pos_bottom='5%',max_=100,is_show=True,is_piecewise=True,split_number=5,textstyle_opts=opts.TextStyleOpts(color="#fff"),range_color=["#ffde93", "#ffc107", "#ff9800", "#ff5722", "#f44336"],),)
)

3.2 渲染地图

  最后,我们将地图渲染为 HTML 文件,以便查看效果。

# 渲染地图
map_chart.render("休宁县乡镇街道级地图.html")

四、完整代码

  以下是完整的代码,可以直接运行:

import json
import random
from pyecharts import options as opts
from pyecharts.charts import Map# 读取 GeoJSON 文件
with open('休宁县.geojson', 'r', encoding='utf-8') as f:json_data = json.load(f)# 生成随机数据
datas = [(properties['properties']['name'], random.randint(1, 100)) for properties in json_data['features']]# 初始化地图
map_chart = (Map(init_opts=opts.InitOpts(width='800px', height='800px', bg_color='#0d0735')).add_js_funcs("echarts.registerMap('emap', {});".format(json_data)).add(series_name="",maptype="emap",data_pair=datas,is_roam=False,is_map_symbol_show=False,).set_global_opts(title_opts=opts.TitleOpts(title="休宁县乡镇街道级地图",subtitle="数据来源:自定义 GeoJSON",item_gap=5,pos_left='center',pos_top='3%',title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_size=16),),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(pos_right='10%',pos_bottom='10%',max_=100,is_show=True,is_piecewise=True,split_number=5,textstyle_opts=opts.TextStyleOpts(color="#fff"),range_color=["#ffde93", "#ffc107", "#ff9800", "#ff5722", "#f44336"],),)
)# 渲染地图
map_chart.render("休宁县乡镇街道级地图.html")

五、运行结果

  运行上述代码后,会生成一个名为 休宁县乡镇街道级地图.html 的文件。打开该文件,可以看到如下效果:

4.1 地图展示

  地图展示了安徽省黄山市休宁县的乡镇街道级地理信息,每个街道或乡镇都有不同的颜色表示其数据值。地图背景为黑色,视觉效果炫酷,数据分布一目了然。特别地,这个地图展示了我的老家——休宁县的详细地理信息,让我感到非常亲切。

4.2 数据可视化

  通过视觉映射(VisualMap),数据值被分为不同的区间,每个区间用不同的颜色表示。这使得我们能够直观地看到不同街道或乡镇的数据差异。

五、总结

  本文详细介绍了如何使用 Pyecharts 绘制乡镇街道级地图,以安徽省黄山市休宁县(我的老家)为例。通过自定义 GeoJSON 数据和 Pyecharts 的强大功能,我们可以轻松实现乡镇街道级地图的绘制。这种方法不仅适用于休宁县,还可以扩展到其他地区,帮助我们更好地展示地理信息数据。


http://www.lryc.cn/news/624304.html

相关文章:

  • 【数据结构】深入理解双向链表:结构、实现与对比分析
  • 后台管理系统-6-vue3之mockjs模拟和axios请求数据
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例
  • 算法魅力-BFS解决多源最短路
  • go语言条件语if …else语句
  • Apache Shiro550 漏洞(CVE-2016-4437):原理剖析与实战 SOP
  • 检测手绘图中不规则曲线交点的方法和一般规则线条交点的方法
  • Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
  • SAP 简单的AMDP demo 练习使用
  • Midjourney绘画创作入门操作创作(在线教育背景系列)
  • 广州曼顿智能断路器:让用电更聪明,生活更安心!
  • SSM-组件的批量扫描
  • Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
  • 双通道审核智能合约更新路径:基于区块链与AI融合的编程范式分析
  • 静态网站与动态网站的区别
  • 笔试——Day42
  • 【lucene】tip文件详解
  • 高并发网络编程实战:深入理解epoll客户端的事件驱动模型
  • HAProxy使用方法以及和LVS区别
  • 图形自动化:pynput实现Win11系统动作点击录制与回放
  • axure chrome 浏览器插件的使用
  • 大数据计算引擎(三)——Elasticsearch入门
  • 某储备土地前期开发项目控制保护区桥梁自动化监测
  • Git版本控制与协作
  • 数字时代著作权侵权:一场资本与法律的博弈
  • PYTHON让繁琐的工作自动化-函数
  • week2-[循环结构]找出正数
  • Vue3 中使用 Element Plus 完整指南
  • 从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
  • [数据结构] ArrayList 与 顺序表