Echarts数据可视化series-map地图,开发全解+完美注释

全栈工程师开发手册 (作者:栾鹏)

Echarts数据可视化开发代码注释全解
Echarts数据可视化开发参数配置全解

6大公共组件详解(点击进入):
title详解tooltip详解toolbox详解legend详解dataZoom详解visualMap全解

5大坐标系详解(点击进入):
地理坐标系geo详解grid直角坐标系(xAxis、yAxis)详解parallel平行坐标系详解polar极坐标系详解radar雷达坐标系详解

19种图表类型详解(点击进入,待续):
series-bar柱形图详解series-effectscatter特效散点图series-graph关系图series-heatmap热力图series-line线图series-map地图series-pie饼图series-radar雷达图series-scatter散点图

图表行为和图表事件:
action图表行为event图表事件

Echarts数据可视化series-map地图全解:

mytextStyle={
    color:"#333",                //文字颜色
    fontStyle:"normal",         //italic斜体  oblique倾斜
    fontWeight:"normal",        //文字粗细bold   bolder   lighter  100 | 200 | 300 | 400...
    fontFamily:"sans-serif",    //字体系列
    fontSize:18,                  //字体大小
};
mylineStyle={
    color:"#333",               //颜色,'rgb(128, 128, 128)','rgba(128, 128, 128, 0.5)',支持线性渐变,径向渐变,纹理填充
    shadowColor:"red",          //阴影颜色
    shadowOffsetX:0,            //阴影水平方向上的偏移距离。
    shadowOffsetY:0,            //阴影垂直方向上的偏移距离
    shadowBlur:10,              //图形阴影的模糊大小。
    type:"solid",               //坐标轴线线的类型,solid,dashed,dotted
    width:1,                    //坐标轴线线宽
    opacity:1,                  //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形
};
myareaStyle={
    color:['rgba(250,250,250,0.3)','rgba(200,200,200,0.3)'],//分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
    shadowColor:"red",          //阴影颜色
    shadowOffsetX:0,            //阴影水平方向上的偏移距离。
    shadowOffsetY:0,            //阴影垂直方向上的偏移距离
    shadowBlur:10,              //图形阴影的模糊大小。
    opacity:1,                  //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形
};
myitemStyle={
    color:"red",                 //颜色
    borderColor:"#000",         //边框颜色
    borderWidth:0,               //柱条的描边宽度,默认不描边。
    borderType:"solid",         //柱条的描边类型,默认为实线,支持 'dashed', 'dotted'。
    barBorderRadius:0,          //柱形边框圆角半径,单位px,支持传入数组分别指定柱形4个圆角半径。
    shadowBlur:10,               //图形阴影的模糊大小。
    shadowColor:"#000",         //阴影颜色
    shadowOffsetX:0,            //阴影水平方向上的偏移距离。
    shadowOffsetY:0,            //阴影垂直方向上的偏移距离。
    opacity:1,                   //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
};
mylabel={
    show:false,                  //是否显示标签。
    position:"inside",          //标签的位置。// 绝对的像素值[10, 10],// 相对的百分比['50%', '50%'].'top','left','right','bottom','inside','insideLeft','insideRight','insideTop','insideBottom','insideTopLeft','insideBottomLeft','insideTopRight','insideBottomRight'
    offset:[30, 40],             //是否对文字进行偏移。默认不偏移。例如:[30, 40] 表示文字在横向上偏移 30,纵向上偏移 40。
    formatter:'{b}: {c}',       //标签内容格式器。模板变量有 {a}、{b}、{c},分别表示系列名,数据名,数据值。
    textStyle:mytextStyle
};
mypoint={
    symbol:"pin",               //图形 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
    symbolSize:50,              //标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。
    symbolRotate:0,             //标记的旋转角度。注意在 markLine 中当 symbol 为 'arrow' 时会忽略 symbolRotate 强制设置为切线的角度。
    symbolOffset:[0,0],         //标记相对于原本位置的偏移。默认情况下,标记会居中置放在数据对应的位置
    silent:false,               //图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
    label:{
        normal:mylabel,
        emphasis:mylabel
    },
    itemStyle:{
        normal:myitemStyle,
        emphasis:myitemStyle
    }
};
myline={
    symbol:["pin","circle"],    //图形 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
    symbolSize:50,              //标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。
    precision:2,                //标线数值的精度,在显示平均值线的时候有用。
    silent:false,               //图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
    label:{
        normal:mylabel,
        emphasis:mylabel
    },
    lineStyle:{
        normal:mylineStyle,
        emphasis:mylineStyle
    }
};
myarea={
    silent:false,               //图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
    label:{
        normal:mylabel,
        emphasis:mylabel
    },
    itemStyle:{
        normal:myitemStyle,
        emphasis:myitemStyle
    }
};
series=[
{
    type:"map",                                 //地图数据表
    map:"china",                                //地图类型。world世界地图,china中国地图
    roam:false,                                 //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
    center:[115.97, 29.71],                     //当前视角的中心点,用经纬度表示
    aspectScale:0.75,                           //这个参数用于 scale 地图的长宽比。
    boundingCoords: [[-180, 90], [180, -90]],  //二维数组,定义定位的左上角以及右下角分别所对应的经纬度
    zoom:1,                                     //当前视角的缩放比例
    scaleLimit:{                                //所属组件的z分层,z值小的图形会被z值大的图形覆盖
        min:1,                                  //最小的缩放值
        max:1,                                  //最大的缩放值
    },
    nameMap:{                                   //自定义地区的名称映射
        'China' : '中国'
    },
    selectedMode: false ,                      //选中模式,表示是否支持多个选中,默认关闭,支持布尔值和字符串,字符串取值可选'single'表示单选,或者'multiple'表示多选。
    label:{                                     //图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等
        normal:{
            show:false,                          //是否在普通状态下显示标签。
            textStyle:mytextStyle,              //普通状态下的标签文本样式。
        },
        emphasis:{
            show:false,                         //是否在高亮状态下显示标签。
            textStyle:mytextStyle              //高亮状态下的标签文本样式。
        }
    },
    itemStyle:{                                 //地图区域的多边形 图形样式
        normal:myitemStyle,
        emphasis:myitemStyle
    },
    zlevel:0,                                   //所属图形的 zlevel 值。
    z:2,                                         //所属图形的 z 值。
    left:"10%",                                 //组件离容器左侧的距离,百分比字符串或整型数字
    top:60,                                      //组件离容器上侧的距离,百分比字符串或整型数字
    right:"auto",                               //组件离容器右侧的距离,百分比字符串或整型数字
    bottom:"auto",                              //组件离容器下侧的距离,百分比字符串或整型数字
    layoutCenter:['30%', '30%'],                //地图中心在屏幕中的位置
    layoutSize:100,                              //地图的大小,支持相对于屏幕宽高的百分比或者绝对的像素大小。
    mapValueCalculation:"sum",                  //多个拥有相同地图类型的系列会使用同一个地图展现,如果多个系列都在同一个区域有值,目前有:'sum' 取和。'average' 取平均值。'max' 取最大值。'min' 取最小值。
    showLegendSymbol:true,                      //在图例相应区域显示图例的颜色标识(系列标识的小圆点),存在 legend 组件时生效。
    silent:false,                                //图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
    data: [
        {name: '数据1',value: 10},
        {name: '数据2',value: 20}
    ],
    //markPoint:同bar
    //markLine:同bar
    //markArea:同bar
    tooltip:tooltip 
},


];
<think>好的,用户现在想学习使用Pyecharts进行数据可视化,特别是图形绘制的方法和应用。首先,我需要回顾之前的对话,用户之前询问了常见的数据可视化图形及其使用场景,而我的回答涵盖了条形图、折线图、散点图等,并附带了Matplotlib和Seaborn的示例代码。现在用户转向Pyecharts,这意味着需要调整内容,从之前的库转移到Pyecharts的特定语法和功能。 用户提供的引用内容显示,他们希望了解Pyecharts的基础知识、安装、图表类型、语法结构以及实际案例。引用[1]提到安装和基本使用,引用[2]和[4]讨论了数据对比类图形,如多重柱形图,引用[3]则详细描述了Pyecharts的语法结构,包括图表类型、数据格式、配置项和方法链。因此,我需要将这些信息整合到回答中,确保覆盖用户提到的所有方面。 接下来,我需要确定用户可能的背景和需求。他们可能已经有一定的Python基础,但可能对Pyecharts不熟悉。需要从安装开始,逐步介绍基本步骤,然后展示不同图表类型的示例,如柱状图、折线图、饼图等,并结合用户提到的多重柱形图和配置项。此外,用户可能对交互式功能和动态可视化感兴趣,因为Pyecharts在这方面比Matplotlib更有优势。 需要注意用户之前的回答中提到的注意事项,如数据预处理、图表清晰性、中文兼容性等,这些也需要在Pyecharts的上下文中重新解释。例如,设置中文显示在Pyecharts中的方法可能不同,需要提供相应的代码示例。 还要考虑用户可能遇到的常见问题,比如如何添加多个数据系列、如何自定义颜色、如何处理交互式提示框等。确保回答中的示例代码清晰,关键参数有注释说明,方便用户理解和复制。 最后,生成的相关问题需要与Pyecharts相关,比如高级图表类型、动态数据可视化、主题配置等,引导用户进一步探索。同时,引用之前的引用编号,确保信息准确,比如引用[3]中的方法链结构需要在代码示例中体现。</think>### Pyecharts 数据可视化图形绘制教程(附代码示例) --- #### 一、Pyecharts 核心特性与安装 **核心特性**: - 支持 30+ 图表类型(包括动态图表) - 基于 ECharts 的交互式可视化能力 - 支持链式调用语法(如 `.add_xaxis().add_yaxis()`)[^3] - 内置主题系统(如 `ThemeType.MACARONS`)[^4] **安装方法**: ```bash pip install pyecharts # 基础库 pip install pyecharts-jupyter-installer # Jupyter支持 ``` --- #### 二、基础图形绘制流程(以柱状图为例) **6步核心操作**: ```python from pyecharts.charts import Bar from pyecharts import options as opts # 1. 创建图表对象 bar = Bar() # 2. 添加X轴数据 bar.add_xaxis(["苹果", "香蕉", "橙子", "葡萄"]) # 3. 添加Y轴数据(可叠加多个系列) bar.add_yaxis("2023年销量", [120, 85, 70, 95]) bar.add_yaxis("2024年销量", [150, 90, 80, 110]) # 4. 配置全局选项 bar.set_global_opts( title_opts=opts.TitleOpts(title="水果销量对比", subtitle="单位:吨"), toolbox_opts=opts.ToolboxOpts(is_show=True) # 显示工具栏 ) # 5. 配置系列选项 bar.set_series_opts( label_opts=opts.LabelOpts(is_show=True), markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max", name="最大值")] ) ) # 6. 生成HTML文件 bar.render("bar_chart.html") ``` **关键特性**: - 支持多系列数据对比(通过多次调用 `add_yaxis`)[^2] - 交互式提示框自动显示数值 - 内置主题切换(如设置 `init_opts=opts.InitOpts(theme=ThemeType.LIGHT)`) --- #### 三、核心图表类型与代码模板 ##### 1. 多重柱形图(数据对比) ```python from pyecharts.charts import Bar from pyecharts.faker import Faker bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) # 使用马卡龙主题[^4] .add_xaxis(Faker.choose()) # 生成示例数据 .add_yaxis("超市A", Faker.values()) .add_yaxis("超市B", Faker.values()) .set_global_opts( title_opts=opts.TitleOpts(title="超市销售额对比"), datazoom_opts=opts.DataZoomOpts() # 添加数据缩放控件 ) ) bar.render("multi_bar.html") ``` ![多重柱形图示例](https://example.com/multi-bar.png) _通过不同颜色区分多组数据对比[^2]_ --- ##### 2. 动态折线图(时间序列) ```python from pyecharts.charts import Line line = ( Line() .add_xaxis(["1月", "2月", "3月", "4月"]) .add_yaxis("温度", [8, 15, 22, 18], is_smooth=True, # 平滑曲线 markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average")] )) .set_global_opts( tooltip_opts=opts.TooltipOpts(trigger="axis") # 坐标轴触发提示 ) ) line.render("dynamic_line.html") ``` --- ##### 3. 嵌套饼图(占比分析) ```python from pyecharts.charts import Pie data = [("电子产品", 45), ("食品", 30), ("服饰", 25)] inner_pie = ( Pie() .add("", [list(x) for x in data], radius=["0%", "30%"]) ) outer_data = [("手机", 60), ("电脑", 40)] outer_pie = ( Pie() .add("", [list(x) for x in outer_data], radius=["40%", "55%"]) .set_series_opts(label_opts=opts.LabelOpts(position="outside")) ) inner_pie.overlap(outer_pie).render("nested_pie.html") ``` ![嵌套饼图示例](https://example.com/nested-pie.png) _通过半径控制实现嵌套效果[^1]_ --- #### 四、进阶功能实现 ##### 1. 地图数据可视化 ```python from pyecharts.charts import Map data = [("北京", 125), ("上海", 189), ("广东", 256)] map_chart = ( Map() .add("人口分布", data, "china") .set_global_opts( visualmap_opts=opts.VisualMapOpts(max_=300), title_opts=opts.TitleOpts(title="中国人口分布热力图") ) ) map_chart.render("china_map.html") ``` ##### 2. 动态仪表盘 ```python from pyecharts.charts import Gauge gauge = ( Gauge() .add("完成率", [("任务进度", 78.5)], axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts( color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30 ) )) .set_global_opts(title_opts=opts.TitleOpts(title="项目进度监控")) ) gauge.render("gauge.html") ``` --- #### 五、关键配置项说明 | **配置类别** | **常用选项** | **功能说明** | |--------------------|--------------------------------------|----------------------------------| | `TitleOpts` | title, subtitle, pos_left | 控制标题内容和位置 | | `LegendOpts` | is_show, pos_right, orient | 图例显示与布局 | | `TooltipOpts` | trigger, formatter | 提示框触发方式与内容格式化 | | `VisualMapOpts` | range_color, range_size | 颜色/尺寸映射规则 | | `DataZoomOpts` | is_show, range_start, range_end | 数据缩放控件配置 | --- #### 六、最佳实践建议 1. **数据预处理** ```python # 示例:数据归一化处理 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 100)) normalized_data = scaler.fit_transform(raw_data) ``` 2. **中文显示配置** ```python from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/" # 设置在线资源 ``` 3. **性能优化** - 大数据集使用 `Page()` 分页显示 - 超过10万数据点建议先用 `DataZoom` 缩放 --- ### 相关问题 1. Pyecharts 如何实现 3D 可视化效果(如 3D 柱状图)? 2. 如何将多个图表组合到同一个仪表盘(使用 `Page` 布局)? 3. Pyecharts 与 Flask/Django 框架的集成方法? 4. 怎样导出 Pyecharts 图表为 PNG/PDF 格式? --- [^1]: Pyecharts 基础安装与使用指南 [^2]: 数据对比类图形实现方法 [^3]: Pyecharts 链式语法结构解析 [^4]: 高级图表主题配置技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

腾讯AI架构师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值