转载来源:​​链接   修改部分内容​

用 Python 绘制中国城市地图数据主要用于对地理数据进行可视化分析。这种方法可以帮助您更直观地了解数据的分布情况,并为您提供关于数据之间的相关性的更深入的理解。例如,您可以通过使用地图数据绘制中国城市人口分布图,以了解每个城市的人口数量和密度。您还可以通过使用地图数据绘制中国城市的经济数据,以了解每个城市的经济活动情况,包括贸易额、工业产值等。本例,我们利用 pandas 和 pyecharts 来完成相关需求。

需求

首先生成测试数据,并读取为 pandas 的 DataFrame,随机数据用 Python 内置的 random。

import pandas as pd
import random

random.seed(66)

random.seed(66)

cities = ['北京市', '上海市', '广州市', '深圳市', '天津市',
'武汉市', '重庆市', '成都市', '东莞市', '西安市',
'沈阳市', '青岛市', '大连市', '宁波市', '厦门市',
'长沙市', '哈尔滨市', '南京市', '郑州市', '合肥市',
'苏州市', '常州市', '无锡市', '昆明市', '南昌市',
'南宁市', '济南市', '长春市', '福州市', '佛山市',
'温州市', '石家庄市', '太原市', '唐山市', '烟台市',
'中山市', '泉州市', '南通市', '扬州市', '徐州市',
'盐城市', '淄博市', '洛阳市', '柳州市', '泰州市',
'丽江市', '海口市', '三亚市', '长治市', '桂林市',
'大庆市', '兰州市', '贵阳市', '南阳市', '邯郸市',
'保定市', '呼和浩特市', '沧州市', '廊坊市', '衡阳市',
'商丘市', '南充市', '临沂市', '漯河市', '阜阳市',
'景德镇市', '江门市', '茂名市', '惠州市', '芜湖市',
'淮安市', '马鞍山市', '绵阳市', '乌鲁木齐市', '拉萨市',
'西宁市', '德阳市', '绍兴市', '金华市', '嘉兴市']

df = pd.DataFrame({'城市': cities,
'数值': [random.randint(1, 20) for i in cities]
})

df.head()
'''
城市 数值
0 北京市 3
1 上海市 10
2 广州市 14
3 深圳市 8
4 天津市 15
'''

数据生成完成,接下来我们开始分析如何完成需求。

思路

Pyecharts是一款开源的 Python 图表绘制库,支持多种图表类型的绘制,例如饼图,折线图,散点图,条形图,柱形图等。同时它还支持生成地图图表。

使用 Pyecharts 生成地图图表需要以下步骤:

  • 安装 Pyecharts 库:可以使用 pip 命令进行安装:pip install pyecharts
  • 导入需要的模块:导入 Map 模块以及其相关配置选项:
from pyecharts import options as opts
from pyecharts.charts import Map
  • 数据准备:需要准备地图所需的数据,通常是城市数据和对应的数值数据。
  • 生成地图:使用 Map 模块的 add 方法,配置地图的相关选项,例如标签,图例,视觉效果等。
  • 呈现地图:调用 render 方法,或者使用 render_notebook 方法将地图呈现在 Jupyter Notebook 中。

以上是生成地图图表的基本流程。Pyecharts 提供了丰富的配置选项,可以根据需要调整图表样式。

在这个需求中,我们用它来完成。

代码

先导入相关的库,同时将 Notebook 设置为我们使用的 jupyterlab:

from pyecharts import options as opts
from pyecharts.globals import CurrentConfig
from pyecharts.charts import Map
import pandas as pd

from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
#CurrentConfig.NOTEBOOK_TYPE = 'jupyter_lab'

先将数据构造成 pyecharts 需要的列表对为元素的列表,这里用到 pandas 的应用方法操作:

data = df.loc[:, '城市':].apply(list, axis=1).to_list()
data
'''
[['北京市', 3],
['上海市', 10],
['广州市', 14],
...
['金华市', 20],
['嘉兴市', 17]]
'''

接下来编写地图展示功能:

c = (
Map(init_opts=opts.InitOpts(width='1100px', height='1000px'))
.add(
'城市',
data,
"china-cities",
label_opts=opts.LabelOpts(is_show=False),
is_map_symbol_show=False,
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(min_=0,
max_=20,
is_show=False),
legend_opts=opts.LegendOpts(is_show=False)
)
# .render("map_china_cities.html")
)

分别在不同的 jupyterlab 单元格执行以下代码就可以看到地图可视化效果。

c.load_javascript()
c.render_notebook()

Python 绘制中国城市数据地图可视化_中国城市

中国地图可视化

以上 Python 代码主要是使用了 pyecharts 库和 pandas 库来绘制中国地图,并将某个城市的数据可视化展示。

  • 首先,导入了 pyecharts 库中的选项、全局变量、地图图表等模块。
  • 然后,将 pyecharts 全局配置环境设置为 Jupyter Lab 环境。
  • 接着,使用 pandas 库构造随机数据,以 DataFrame 结构存入变量 "df" 中。
  • 然后,调用 head() 函数展示 "df" 的前几行数据。
  • 定义变量 "data",将 "df" 中除了 '城市' 以外的数据列,通过 apply() 函数转换为列表,并调用 to_list() 函数转换为 Python 列表。
  • 然后,使用 Map 类创建地图图表,并设置图表的大小、标题、数据源等。
  • 通过 set_global_opts() 函数设置图表的全局配置选项,如:设置可视化范围、图例等。
  • 设计虚拟映射功能的最大值和最小值,根据我们的随机数据最大值为20;不显示DataFrame下角的映射调节工具
  • 设置图例为不显示
  • 数据名称为城市
  • 数据传入我们构造好的 data
  • 图形类型为中国城市
  • 标签设置为不显示,即不显示城市名
  • 不显示城市符号
  • Map 实例创建时初始化了图形的宽和高
  • 然后用 add() 方法给实例添加一个数据内容
  • 再进行全局配置
  • 最后,通过 render_notebook() 函数将图表展示在 JupyterLab 的 Notebook 中。

这样就完成发需求,可以修改以上参数的值重新执行查看结果以理解它们的作用。