分享

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

 NeighborMrSun 2023-03-09 发布于湖南

用 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(120for 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

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 代码主要是使用了 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 中。

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

(完)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多