Jupyter中使用Pyecharts绘制地图

背景:根据各省频率绘制地图

根据各省频率绘制地图,可以使用 Pyecharts 绘制。下面是详细的步骤:

1、安装 Pyecharts:可以通过 !pip install pyecharts 命令安装。

2、导入相关库

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

3、准备数据:需要将各省份和对应频率存储在一个 DataFrame 中,其中列名为 "province" 和 "frequency"。例如:

df = pd.DataFrame({
    "province": ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", 
                 "吉林省", "黑龙江省", "上海市", "江苏省", "浙江省", "安徽省", 
                 "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", 
                 "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省", "贵州省", 
                 "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", 
                 "新疆维吾尔自治区"],
    "frequency": [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,
                  130, 140, 150, 160, 170, 180, 190, 200, 210, 220,
                  230, 240, 250, 260, 270, 280, 290, 300, 310]
})

4、绘制地图:使用 Pyecharts 中的 Map 类,将各省份和对应频率填入其中,并设置地图属性。

map_chart = (
    Map() # 创建地图对象
    .add("各省份频率分布", [list(z) for z in zip(df["province"], df["frequency"])], "china") # 添加数据,设置地图类型
    .set_global_opts(
        title_opts=opts.TitleOpts(title="各省份频率分布图"),
        visualmap_opts=opts.VisualMapOpts(max_=310, is_piecewise=True), # 设置视觉映射配置,控制颜色范围
    )
)

map_chart.render_notebook() # 在 Jupyter Notebook 中渲染图表

完整代码如下:

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map
df = pd.DataFrame({
    "province": ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", 
                 "吉林省", "黑龙江省", "上海市", "江苏省", "浙江省", "安徽省", 
                 "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", 
                 "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省", "贵州省", 
                 "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", 
                 "新疆维吾尔自治区"],
    "frequency": [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,
                  130, 140, 150, 160, 170, 180, 190, 200, 210, 220,
                  230, 240, 250, 260, 270, 280, 290, 300, 310]
})


map_chart = (
    Map() # 创建地图对象
    .add("各省份频率分布", [list(z) for z in zip(df["province"], df["frequency"])], "china") # 添加数据,设置地图类型
    .set_global_opts(
        title_opts=opts.TitleOpts(title="各省份频率分布图"),
        visualmap_opts=opts.VisualMapOpts(max_=310, is_piecewise=True), # 设置视觉映射配置,控制颜色范围
    )
)

map_chart.render_notebook() # 在 Jupyter Notebook 中渲染图表

运行结果:

 如果想绘制动态显示的地图:即随着时间的变化,各省份相关数据频率也发生变化,地图中颜色在动态变化显示。

完整代码如下:

from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
import numpy as np
 
province_dis = {'宁夏回族自治区':155,'河南省':355, '北京市': 117, '河北省': 521, '辽宁省': 612, '江西省': 126, '上海市':1520, '安徽省': 230, '江苏省': 226, '湖南省': 449,'浙江省': 553, '海南省': 512, '广东省': 712, '湖北省': 118, '黑龙江省': 111, '澳门特别行政区': 191, '陕西省': 211, '四川省': 717, '内蒙古自治区': 113, '重庆市': 13,'广西壮族自治区':81,'云南省': 216, '贵州省': 121, '吉林省': 131, '山西省': 131, '山东省': 111, '福建省': 341, '青海省': 151, '天津市': 131,'新疆维吾尔自治区':150,'西藏自治区':170,'甘肃省':120,'台湾省':31}
provice = list(province_dis.keys())
values = list(province_dis.values())
 
province_dis1 = {'宁夏回族自治区':55,'河南省': 145, '北京市': 137, '河北省': 121, '辽宁省': 112, '江西省': 16, '上海市':120, '安徽省': 110, '江苏省': 116, '湖南省': 119,'浙江省': 113, '海南省': 12, '广东省': 212, '湖北省': 18, '黑龙江省': 111, '澳门特别行政区': 11, '陕西省': 111, '四川省': 17, '内蒙古自治区': 13, '重庆市': 13,'广西壮族自治区':81,'云南省': 16, '贵州省': 21, '吉林省': 31, '山西省': 11, '山东省': 111, '福建省': 41, '青海省': 51, '天津市': 11,'新疆维吾尔自治区':150,'西藏自治区':170,'甘肃省':120,'台湾省':31}
values1 = list(province_dis1.values())
 
 
sum_vlaues=[]
sum_vlaues.append(values),sum_vlaues.append(values1)
 
 
tl = Timeline()
for i in range(2015, 2017):
    map_min=int(np.min(sum_vlaues[i-2015]))
    map_max=int(np.max(sum_vlaues[i-2015]))
    china = (
        Map()
        .add("", [list(z) for z in zip(provice, sum_vlaues[i-2015])], "china")
        .set_global_opts(title_opts=opts.TitleOpts(title="中国地图"), visualmap_opts=opts.VisualMapOpts(type_='color',min_=map_min,max_=map_max))
    )
    tl.add(china, "{}年".format(i))
tl.add_schema(is_auto_play=True, play_interval=1000)      # 自动播放,跳动的间隔为1000ms
tl.render_notebook()

运行结果(2015年动态地图):

 2016年动态地图:

 注意:Pyecharts地图构建为什么不显示颜色和内容呢?

运行结果显示就一个灰白的地图,心想着明明有传入数据,为啥不根据频率显示颜色呢?

 原因:传入的数据中,各省市的名称必须要和地图上显示的名称一致,不能简写。如有简写,则需要将北京改为北京市,如果有自治区,就写内蒙古自治区,湖南要写成湖南省,澳门要写成澳门特别行政区。

猜你喜欢

转载自blog.csdn.net/weixin_40547993/article/details/131276023