利用Pyecharts库实现(世界,国家,区域)地图可视化

技术

Pyecharts是一款基于Echarts的Python可视化库,用于创建各种类型的交互式图表和地图可视化。Echarts是一种流行的JavaScript图表库,而Pyecharts则为Python用户提供了使用Echarts创建图表的接口, 通过Pyecharts,用户可以轻松地生成各种图表,包括折线图、柱状图、散点图、饼图等。其中,地图可视化是Pyecharts的一项强大功能,允许用户在地图上展示数据分布、热力图等信息,以直观的方式呈现地理数据

1. 世界地图生成


          
# 当前世界库存
          
from pyecharts import options as opts
          
from pyecharts.charts import Map
          
import random
          

          
# 设置当前拥核国家核武器库存
          
ultraman = [
          
    ['China', 350],
          
    ['France', 290],
          
    ['India', 160],
          
    ['Israel', 90],
          
    ['North Korea', 20],
          
    ['Pakistan', 165],
          
    ['Russia', 4477],
          
    ['United Kingdom', 180],
          
    ['United States', 3708]
          
]
          

          
# 设置曾经拥有核武器现在不在拥有核武器国家
          
monster = [
          
    ['South Africa', 0]
          
]
          

          
def create_world_map():
          
    ''' 
          
    作用:生成世界地图
          
    '''
          
    (
          
        # 创建地图实例
          
        Map()
          
        # 添加当前拥核国家核武器库存数据
          
        .add(
          
            series_name="National stockpiles with nuclear weapons in 2022", 
          
            data_pair=ultraman, 
          
            maptype="world", 
          
        )
          
        # 添加曾经拥有核武器现在不在拥有核武器国家数据
          
        .add(
          
            series_name="States that once possessed nuclear weapons", 
          
            data_pair=monster, 
          
            maptype="world", 
          
        )
          
        # 全局配置项
          
        .set_global_opts(
          
            # 设置视觉映射的最大值
          
            visualmap_opts=opts.VisualMapOpts(max_=5000, is_piecewise=True),
          
        )
          
        # 系列配置项
          
        .set_series_opts(
          
            # 设置标签名称是否显示,默认为True
          
            label_opts=opts.LabelOpts(is_show=False
          
                                      , color="blue")
          
        )
          
        # 生成本地html文件
          
        .render("世界地图.html")
          
    )
          

          
# 调用函数生成世界地图
          
create_world_map()
      

picture.image

使用Pyecharts库创建了一个世界地图,展示了当前拥有核武器的国家及其库存量,同时突出显示曾经拥有核武器但现在不再拥有的国家。通过可视化方式生动呈现了全球核武器库存的分布情况

picture.image

交互性体现在地图的可视化图表上。用户可以通过鼠标悬停或点击相关区域,实现信息的动态显示。对于曾经拥有核武器但现在不再拥有的国家,可以在地图上进行交互式操作,触发相应的信息,以及高亮显示效果

2. 中国地图生成


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

          
# 提供的数据
          
data = {
          
    '省/市': ['河南省', '广东省', '山东省', '四川省', '安徽省', '河北省', '贵州省', '湖南省', '广西壮族自治区',
          
              '江西省', '湖北省', '江苏省', '陕西省', '山西省', '云南省', '浙江省', '甘肃省', '重庆市', '辽宁省',
          
              '内蒙古自治区', '福建省', '黑龙江省', '新疆维吾尔自治区', '吉林省', '宁夏回族自治区', '北京市', '海南省',
          
              '天津市', '上海市', '青海省', '西藏自治区'],
          
    '2017年': [86.3, 75.7, 58.3, 58.3, 49.9, 43.6, 41.2, 41.1, 36.5, 36.5, 36.2, 33.0, 31.9, 31.7, 29.3, 29.1, 28.5,
          
               21.1, 20.8, 19.8, 18.8, 18.8, 18.4, 14.3, 6.9, 6.0, 5.7, 5.7, 5.0, 4.6, 2.8]
          
}
          

          

          
def create_china_map():
          
    '''
          
    作用:生成中国地图
          
    '''
          
    # 数据处理,将省份名称和对应的高考人数组成元组列表
          
    province_data = [(province, num) for province, num in zip(data['省/市'], data['2017年'])]
          

          
    # 使用 Map 类生成地图
          
    china_map = (
          
        Map()
          
        .add("2017年高考人数(万人)", province_data, "china")
          
        .set_series_opts(
          
            label_opts=opts.LabelOpts(is_show=False, formatter="{c}", position="inside")
          
        )
          
        .set_global_opts(
          
            visualmap_opts=opts.VisualMapOpts(max_=90, is_piecewise=True),
          
            title_opts=opts.TitleOpts(title="2017年中国各省高考人数"),
          
        )
          
    )
          

          
    # 生成本地html文件
          
    china_map.render("中国高考人数地图.html")
          

          

          
create_china_map()
      

picture.image

3. 重庆地图生成


          
from pyecharts import options as opts
          
from pyecharts.charts import Map
          
import random
          
chongqing_data = [              ['渝中区', 1560.91],['渝北区', 2297.11],['沙坪坝区', 1106.73], ['江北区', 1602.76],
          
    ['南岸区', 922.13],['大渡口区', 338.89],['九龙坡区', 1763.94],['北碚区', 742.01],
          
    ['巴南区', 1021.99],['璧山区', 920.95],['永川区', 1202.84],['涪陵区', 1504.37],['合川区', 1000.28],['江津区', 1330.02],
          
    ['长寿区', 918.63],['万州区', 1118.43],['荣昌区', 817.30],['大足区', 817.21],['綦江区', 770.79],['铜梁区', 733.63],
          
    ['开州区', 662.03],['梁平县', 577.16],['潼南区', 558.51],['云阳县', 557.69],['垫江县', 530.61],['忠县', 508.10],
          
    ['南川区', 421.42],['奉节县', 395.25],['丰都县', 391.17],['秀山县', 358.21],['彭水县', 282.13],['黔江区', 281.67],
          
    ['武隆县', 265.94],['酉阳县', 231.66],['巫山县', 222.24],['石柱县', 209.07],['巫溪县', 123.88],['城口县', 66.31]
          
]
          

          
def create_chongqing_map():
          
    ''' 
          
    作用:生成中国重庆地图
          
    '''
          
    (
          
        # 创建地图实例
          
        Map()
          
        # 添加数据
          
        .add(
          
            series_name="GDP(亿元)", 
          
            data_pair=chongqing_data, 
          
            maptype="重庆",  # 使用 "重庆" 作为地图类型
          
            symbol=None,
          
        )
          
        # 全局配置项
          
        .set_global_opts(
          
            # 设置视觉映射的最大值
          
            visualmap_opts=opts.VisualMapOpts(min_= 66.31, max_=2297.11, is_piecewise=True,
          
                                             range_color=['#eff3ff', '#bdd7e7', '#6baed6', '#3182bd', '#08519c']),
          
            title_opts=opts.TitleOpts(title="重庆全市各区县2022GDP"),
          
        )
          
        # 系列配置项
          
        .set_series_opts(
          
            # 设置标签名称是否显示,默认为True
          
            label_opts=opts.LabelOpts(is_show=True, color="red"),
          
            tooltip_opts=opts.TooltipOpts(formatter="{b}: {c} 亿元"),
          
        )
          
        # 生成本地html文件
          
        .render("重庆地图.html")
          
    )
          

          
# 调用函数生成中国重庆地图
          
create_chongqing_map()
      

picture.image

在地图上,通过设置 is_show=True,显示了各区县的名称,提升了地图的可读性,但是由于地名重叠并不美观,可利用交互式操作,清晰显示数据

picture.image

以下链接提供了一个中国县级地图的JavaScript库,可以与pyecharts结合使用,使用这个库来绘制中国的各个县级行政区划地图,以展示相关数据或信息


        
            

          https://echarts-maps.github.io/echarts-china-counties-js/
        
      

4**. 往期推荐**

密度聚类DBSCAN详解附Python代码

Seaborn的15种可视化图表详解

python交互性可视化

orange3一个不需要编程知识进行数据挖掘和机器学习的python工具箱

基于支持向量机(SVM)的红外光谱分类

编程必备!Jupyter Notebook插件打造工作轻松体验

长短期记忆网络LSTM在时序数据预测演示

分类模型评价指标详解(Python实现)

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动大数据容器化构建与落地实践
随着字节跳动旗下业务的快速发展,数据急剧膨胀,原有的大数据架构在面临日趋复杂的业务需求时逐渐显现疲态。而伴随着大数据架构向云原生演进的行业趋势,字节跳动也对大数据体系进行了云原生改造。本次分享将详细介绍字节跳动大数据容器化的演进与实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论