【Python可视化】基于pyecharts模块的地图绘制(pyecharts地图绘制步骤|为地图进行全局配置)

【Python可视化】基于pyecharts模块的地图绘制Map步骤

简介

📣 概况
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

✨ 特性

简洁的 API 设计,使用如丝滑般流畅,支持链式调用
囊括了 30+ 种常见图表,应有尽有
支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
可轻松集成至 Flask,Django 等主流 Web 框架
高度灵活的配置项,可轻松搭配出精美的图表
详细的文档和示例,帮助开发者更快的上手项目
多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

一、pyecharts 地图绘制

1、pyecharts 地图绘制步骤

首先 , 导入 pyecharts 中的 Map 类 , 这是 地图绘制 的核心类 , 该类定义在 pyecharts.charts 中 ;

# 从 pyecharts.options 模块中导入 VisualMapOpts 类。这个类是专门用于配置可视化地图(以及其他一些支持视觉映射的图表类型)中的视觉映射组件的相关参数的。
from pyecharts.options import VisualMapOpts
# 导入pyecharts模块中的地图Map对象
from pyecharts.charts import Map

然后 , 创建 Map 类实例对象 , 该对象对应着一张地图 ;

# 准备地图对象
map = Map()

再后 , 准备要绘制的数据 , 数据类型是列表类型 , 列表元素是 元组 容器 , 元组中第一个元素是对应的 地图中的 地名 ;

# 准备数据
data = [
    ("北京市",99),
    ("上海市",199),
    ("广东省",299),
    ("江西省",399),
    ("湖南省",499),
    ("四川省",599)
]

再后 , 调用 Map类中的add 函数 , 将数据设置到 Map 实例对象中 , 第一个参数是地图名称 , 第二个参数是 地图数据 , 第三个参数是地图类型 , 默认为 china ;

# 添加数据
# 地图名称 : "中国地图"
# 地图数据 : data
# 地图类型 : "china"
map.add("中国地图",data,"china")

接着,使用之前导入的VisualMapOpts为地图进行全局配置。

关于 VisualMapOpts

  • 功能概述
    • VisualMapOpts 类允许你对可视化图表中的数据映射到视觉元素(如颜色、大小等)的方式进行精细设置。通过它,你可以定义诸如颜色区间、数据分段、是否显示视觉映射组件等多种属性。
  • 常见属性及用途
    • is_show:一个布尔值属性,用于确定是否在图表中显示视觉映射组件。例如,将其设置为 True 时,会在图表旁边显示出颜色条或其他形式的视觉映射控件,以便用户能直观地看到数据与视觉呈现之间的对应关系;设置为 False 则不显示。
    • is_piecewise:同样是布尔值属性,当设置为 True 时,表示要对数据进行分段处理,并根据不同的数据段应用不同的视觉效果(如不同的颜色区间)。这在你希望按照特定的数据范围来突出显示不同层次的数据时非常有用。
    • pieces:这是一个列表属性,当 is_piecewiseTrue 时会用到它。列表中的每个元素都是一个字典,用于定义一个数据分段及其对应的视觉属性。例如,字典可以包含 min(数据段的最小值)、max(数据段的最大值)、label(用于显示给用户看的该数据段的标签说明)、color(该数据段对应的颜色)等键值对,以此来精确设定每个数据分段在视觉上的呈现方式。

通过导入 VisualMapOpts 类,后续你就可以在创建和配置 pyecharts 图表(如 Map 图表)时,方便地使用它来定制视觉映射组件的各项参数,从而实现更丰富、更具表现力的数据可视化效果。

调用 Map#set_global_opts() 函数 , 设置全局配置 ; 使用关键字参数 , 指定 visualmap_opts 参数为 VisualMapOpts 类型实例对象 ;

  • 在 VisualMapOpts 构造函数中 , 指定 is_piecewise 为 True , 允许手动校准范围 ;
  • 在 VisualMapOpts 构造函数中 , 指定 pieces 参数 , 设置一个 列表 , 列表元素为字典 , 配置 范围参数 ;

代码示例 :

# 设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,  # 允许手动校准范围大小
        pieces=[
            {"min":1,"max":9,"label":"1-9人","color":"#99ffff"},
            {"min":10,"max":99,"label":"10-99人","color":"#ff0066"},
            {"min":100,"max":499,"label":"100-499人","color":"#FF1493"},
            {"min":200,"max":699,"label":"200-699人","color":"#76EE00"},
        ]
    )
)

最后,使用render函数进行绘制地图

# 绘图
map.render("render_map_china.html")

完整代码示例:

# 当下时间:2024/11/01 9:58
"""
    演示地图可视化的基本使用
"""
# 从 pyecharts.options 模块中导入 VisualMapOpts 类。这个类是专门用于配置可视化地图(以及其他一些支持视觉映射的图表类型)中的视觉映射组件的相关参数的。
from pyecharts.options import VisualMapOpts
from pyecharts.charts import Map

# 准备地图对象
map = Map()
# 准备数据
data = [
    ("北京市",99),
    ("上海市",199),
    ("广东省",299),
    ("江西省",399),
    ("湖南省",499),
    ("四川省",599)
]
# 添加数据
# 地图名称 : "中国地图"
# 地图数据 : data
# 地图类型 : "china"
map.add("中国地图",data,"china")

# 设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,  # 允许手动校准范围大小
        pieces=[
            {"min":1,"max":9,"label":"1-9人","color":"#99ffff"},
            {"min":10,"max":99,"label":"10-99人","color":"#ff0066"},
            {"min":100,"max":499,"label":"100-499人","color":"#FF1493"},
            {"min":200,"max":699,"label":"200-699人","color":"#76EE00"},
        ]
    )
)


# 绘图
map.render("render_map_china.html")

执行结果 : 生成的 render_map_china.html如下 , ( 仅做参考 )

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Awesome-pyecharts</title>
                <script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
            <script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/maps/china.js"></script>

</head>
<body >
    <div id="2ae7387115ca4861a3c0170f987b5ce0" class="chart-container" style="width:900px; height:500px; "></div>
    <script>
        var chart_2ae7387115ca4861a3c0170f987b5ce0 = echarts.init(
            document.getElementById('2ae7387115ca4861a3c0170f987b5ce0'), 'white', {renderer: 'canvas'});
        var option_2ae7387115ca4861a3c0170f987b5ce0 = {
    "animation": true,
    "animationThreshold": 2000,
    "animationDuration": 1000,
    "animationEasing": "cubicOut",
    "animationDelay": 0,
    "animationDurationUpdate": 300,
    "animationEasingUpdate": "cubicOut",
    "animationDelayUpdate": 0,
    "aria": {
        "enabled": false
    },
    "color": [
        "#5470c6",
        "#91cc75",
        "#fac858",
        "#ee6666",
        "#73c0de",
        "#3ba272",
        "#fc8452",
        "#9a60b4",
        "#ea7ccc"
    ],
    "series": [
        {
            "type": "map",
            "name": "\u4e2d\u56fd\u5730\u56fe",
            "label": {
                "show": true,
                "margin": 8
            },
            "map": "china",
            "data": [
                {
                    "name": "\u5317\u4eac\u5e02",
                    "value": 99
                },
                {
                    "name": "\u4e0a\u6d77\u5e02",
                    "value": 199
                },
                {
                    "name": "\u5e7f\u4e1c\u7701",
                    "value": 299
                },
                {
                    "name": "\u6c5f\u897f\u7701",
                    "value": 399
                },
                {
                    "name": "\u6e56\u5357\u7701",
                    "value": 499
                },
                {
                    "name": "\u56db\u5ddd\u7701",
                    "value": 599
                }
            ],
            "roam": true,
            "aspectScale": 0.75,
            "nameProperty": "name",
            "selectedMode": false,
            "zoom": 1,
            "zlevel": 0,
            "z": 2,
            "seriesLayoutBy": "column",
            "datasetIndex": 0,
            "mapValueCalculation": "sum",
            "showLegendSymbol": true,
            "emphasis": {}
        }
    ],
    "legend": [
        {
            "data": [
                "\u4e2d\u56fd\u5730\u56fe"
            ],
            "selected": {},
            "show": true,
            "padding": 5,
            "itemGap": 10,
            "itemWidth": 25,
            "itemHeight": 14,
            "backgroundColor": "transparent",
            "borderColor": "#ccc",
            "borderRadius": 0,
            "pageButtonItemGap": 5,
            "pageButtonPosition": "end",
            "pageFormatter": "{current}/{total}",
            "pageIconColor": "#2f4554",
            "pageIconInactiveColor": "#aaa",
            "pageIconSize": 15,
            "animationDurationUpdate": 800,
            "selector": false,
            "selectorPosition": "auto",
            "selectorItemGap": 7,
            "selectorButtonGap": 10
        }
    ],
    "tooltip": {
        "show": true,
        "trigger": "item",
        "triggerOn": "mousemove|click",
        "axisPointer": {
            "type": "line"
        },
        "showContent": true,
        "alwaysShowContent": false,
        "showDelay": 0,
        "hideDelay": 100,
        "enterable": false,
        "confine": false,
        "appendToBody": false,
        "transitionDuration": 0.4,
        "textStyle": {
            "fontSize": 14
        },
        "borderWidth": 0,
        "padding": 5,
        "order": "seriesAsc"
    },
    "title": [
        {
            "show": true,
            "target": "blank",
            "subtarget": "blank",
            "padding": 5,
            "itemGap": 10,
            "textAlign": "auto",
            "textVerticalAlign": "auto",
            "triggerEvent": false
        }
    ],
    "visualMap": {
        "show": true,
        "type": "piecewise",
        "min": 0,
        "max": 100,
        "inRange": {
            "color": [
                "#50a3ba",
                "#eac763",
                "#d94e5d"
            ]
        },
        "calculable": true,
        "inverse": false,
        "splitNumber": 5,
        "hoverLink": true,
        "orient": "vertical",
        "padding": 5,
        "showLabel": true,
        "itemWidth": 20,
        "itemHeight": 14,
        "borderWidth": 0,
        "pieces": [
            {
                "min": 1,
                "max": 9,
                "label": "1-9\u4eba",
                "color": "#99ffff"
            },
            {
                "min": 10,
                "max": 99,
                "label": "10-99\u4eba",
                "color": "#ff0066"
            },
            {
                "min": 100,
                "max": 499,
                "label": "100-499\u4eba",
                "color": "#FF1493"
            },
            {
                "min": 200,
                "max": 699,
                "label": "200-699\u4eba",
                "color": "#76EE00"
            }
        ]
    }
};
        chart_2ae7387115ca4861a3c0170f987b5ce0.setOption(option_2ae7387115ca4861a3c0170f987b5ce0);
    </script>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔Sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值