pyecharts绘制自定义点+连线取消箭头+时间帧叠加

本文展示了如何使用Pyecharts1.6.1在Python中创建包含自定义标注、连线和时间线叠加的地图图表,提供详细代码和注释。
摘要由CSDN通过智能技术生成

pyecharts之Geo地图大法(详解,代码带注释+效果图)

近期项目上有地图自定义绘点+连线+分严重等级的需求,整了,分开处理啥都好说,多个数据放在同一维度的时候,只恨pyecharts的开发者为什么把功能整得这么简单,要点复杂的图都难搞,害!步入正题。

以下代码均可直接食用,且加上了宇宙无敌超级超级第一级别史无前有的 详细注释,带对应环境+版本号,直接看,直接用!!!!

(声明一下,网上太多的功能其实都是来自不同版本的,而不同版本之间很多功能都容易无法直接使用,且数据很多是不直接给的,或者没有效果图,看不到效果图就要咱先担着浪费时间找数据,改bug,改版本,还不一定是意向效果不知道参数意思的情况下去看,咱是真狗都 不想看)

地图自定义标点+连线

# 版本pyecharts==1.6.1,python3.7.6
import pandas as pd
from pyecharts.charts import Map, Geo
from pyecharts import options as opts
import random
from pyecharts.globals import ChartType,SymbolType


# 获取数据
d1 = [('测试点1', 114.8021, 27.8261), ('测试点2', 115.18, 29.16), ('测试点3', 114.279, 29.001), ('测试点4', 116.024, 28.1079), ('测试点5', 118.01, 28.97)]# 经纬度
# d2 = [('测试点1', 11), ('测试点2', 44), ('测试点3', 88), ('测试点4', 0), ('测试点5', 56)]# 数值大小
d3 = [('测试点1', '测试点2'),('测试点1', '测试点3'),('测试点4', '测试点5')]


map=Geo(init_opts=opts.InitOpts(width="1900px",height='1080px'))


map.add_schema(
    maptype="江西",# 选择江西的板块地图
    itemstyle_opts=opts.ItemStyleOpts(color = '#ECECECFF',border_color = '#ECECECFF'),# 板块颜色和边框颜色设置为相同
    is_roam=True ,# 是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点。
)

# 根据经纬度自定义添加点
for i in d1:
    map.add_coordinate(i[0], i[1], i[2])

# 添加图例和对应数值大小,自己选择是否添加,不想要可以i[1]改为0或者空字符'' 
map.add('第一组值', 
        [(i[0], i[1]) for i in d2],
       type_=ChartType.SCATTER,
        symbol_size=12,# 点大小
       )

# 添加连线图
map.add(
    "点连线",
    d3,  #需要显示的元组对
    type_=ChartType.LINES,
    effect_opts=opts.EffectOpts(
        symbol=SymbolType.ARROW , 
        symbol_size=1, # 游动图标点的大小
        color="blue",# 线的颜色
        period = 7,# 点到终点的时长,周期,秒
    ),
    linestyle_opts=opts.LineStyleOpts(curve=0.4, color='#b0e2ff', opacity=0.3),# 线的样式,卷曲度,颜色,透明度, 设置is_polyline=True后线样式无效
    is_polyline=True,  # 取消连接线条尾部的箭头 
)

map.set_series_opts(label_opts=opts.LabelOpts(is_show=False),#  取消设置点的数值标签
                   )
map.set_global_opts(
    title_opts=opts.TitleOpts(title='测试图',
                              subtitle='测试专用'),
#     visualmap_opts=opts.VisualMapOpts(  #  设置不同严重程度的颜色, 不设置颜色时,将能看到实线条,推测该设置更改了某个设置线条的值
#         # 以下5个参数来自2.0.4,在1.6.1版本中未验证
# #         max_=100,# 最大数值
# #         min_=0, # 最小数值
# #         is_piecewise=True, # 是否将数值分组展示,默认渐变,不分组
# #         range_color=['#8FFF88FF','#FFB37FFF','#DE3333FF'] # 渐变颜色组
#     ),
#     toolbox_opts = opts.ToolboxOpts()
                   )
    
    
map.render('测试地图.html') 
# map.render_notebook()

效果图
在这里插入图片描述

地图自定义标点+连线+设置地点的不同值和颜色

 # 版本pyecharts==1.6.1,python3.7.6
import pandas as pd
from pyecharts.charts import Map, Geo
from pyecharts import options as opts
import random
from pyecharts.globals import ChartType,SymbolType


# 获取数据
d1 = [('测试点1', 114.8021, 27.8261), ('测试点2', 115.18, 29.16), ('测试点3', 114.279, 29.001), ('测试点4', 116.024, 28.1079), ('测试点5', 118.01, 28.97)]# 经纬度
d2 = [('测试点1', 11), ('测试点2', 44), ('测试点3', 88), ('测试点4', 0), ('测试点5', 56)]# 数值大小
d3 = [('测试点1', '测试点2'),('测试点1', '测试点3'),('测试点4', '测试点5')]


map=Geo(init_opts=opts.InitOpts(width="1900px",height='1080px'))


map.add_schema(
    maptype="江西",# 选择江西的板块地图
    itemstyle_opts=opts.ItemStyleOpts(color = '#ECECECFF',border_color = '#ECECECFF'),# 板块颜色和边框颜色设置为相同
    is_roam=True ,# 是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点。
)

# 根据经纬度自定义添加点
for i in d1:
    map.add_coordinate(i[0], i[1], i[2])

# 添加图例和对应数值大小,自己选择是否添加 
map.add('第一组值', 
        [(i[0], i[1]) for i in d2],
       type_=ChartType.SCATTER,
        symbol_size=12,# 点大小
       )

# 添加连线图
map.add(
    "点连线",
    d3,  #需要显示的元组对
    type_=ChartType.LINES,
    effect_opts=opts.EffectOpts(
        symbol=SymbolType.ARROW , 
        symbol_size=1, # 游动图标点的大小
        color="blue",# 线的颜色
        period = 7,# 点到终点的时长,周期,秒
    ),
    linestyle_opts=opts.LineStyleOpts(curve=0.2, color='#b0e2ff', opacity=0.3),# 线的样式,卷曲度,颜色,透明度, 设置is_polyline=True后线样式无效
#     is_polyline=True,  # 取消连接线条尾部的箭头 
)

map.set_series_opts(label_opts=opts.LabelOpts(is_show=False),#  取消设置点的数值标签
                   )
map.set_global_opts(
    title_opts=opts.TitleOpts(title='测试图',
                              subtitle='测试专用'),
    visualmap_opts=opts.VisualMapOpts(  #  设置不同严重程度的颜色, 不设置颜色时,将能看到实线条,推测该设置更改了某个设置线条的值
        # 以下5个参数来自2.0.4,在1.6.1版本中未验证
#         max_=100,# 最大数值
#         min_=0, # 最小数值
#         is_piecewise=True, # 是否将数值分组展示,默认渐变,不分组
#         range_color=['#8FFF88FF','#FFB37FFF','#DE3333FF'] # 渐变颜色组
    ),
#     toolbox_opts = opts.ToolboxOpts()
                   )
    
    
map.render('测试地图2.html') 
# map.render_notebook()

效果图
在这里插入图片描述

地图自定义标点+连线+设置地点的不同值和颜色+时间线叠加图层

 # 版本pyecharts==1.6.1,python3.7.6
import pandas as pd
from pyecharts.charts import Map, Geo
from pyecharts import options as opts
import random
from pyecharts.globals import ChartType,SymbolType
from pyecharts.charts import Bar, Timeline


# 获取数据
d1 = [('测试点1', 114.8021, 27.8261), ('测试点2', 115.18, 29.16), ('测试点3', 114.279, 29.001), ('测试点4', 116.024, 28.1079), ('测试点5', 118.01, 28.97)]# 经纬度
d2 = [('测试点1', 11), ('测试点2', 44), ('测试点3', 88), ('测试点4', 0), ('测试点5', 56)]# 数值大小
d3 = [('测试点1', '测试点2'),('测试点1', '测试点3'),('测试点4', '测试点5')]
d4 = ['某年月日1', '某年月日2', '某年月日3', '某年月日4']

timeline = Timeline()
for ind, my_map in enumerate(d4):
    map=Geo(init_opts=opts.InitOpts(width="1900px",height='1080px'))


    map.add_schema(
        maptype="江西",# 选择江西的板块地图
        itemstyle_opts=opts.ItemStyleOpts(color = '#ECECECFF',border_color = '#ECECECFF'),# 板块颜色和边框颜色设置为相同
        is_roam=True ,# 是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点。
    )

    # 根据经纬度自定义添加点
    for i in d1:
        map.add_coordinate(i[0], i[1], i[2])

    # 添加图例和对应数值大小,自己选择是否添加 
    map.add('第一组值', 
            [(i[0], i[1]+20*ind) for i in d2],# 为了在不同时间中能看出变化,作者在所有值里加了20,方便看到动态变化的效果
           type_=ChartType.SCATTER,
            symbol_size=12,# 点大小
           )

    # 添加连线图
    map.add(
        "点连线",
        d3,  #需要显示的元组对
        type_=ChartType.LINES,
        effect_opts=opts.EffectOpts(
            symbol=SymbolType.ARROW , 
            symbol_size=1, # 游动图标点的大小
            color="blue",# 线的颜色
            period = 7,# 点到终点的时长,周期,秒
        ),
        linestyle_opts=opts.LineStyleOpts(curve=0.2, color='#b0e2ff', opacity=0.3),# 线的样式,卷曲度,颜色,透明度, 设置is_polyline=True后线样式无效
    #     is_polyline=True,  # 取消连接线条尾部的箭头 
    )

    map.set_series_opts(label_opts=opts.LabelOpts(is_show=False),#  取消设置点的数值标签
                       )
    map.set_global_opts(
        title_opts=opts.TitleOpts(title='测试图',
                                  subtitle='测试专用'),
        visualmap_opts=opts.VisualMapOpts(  #  设置不同严重程度的颜色, 不设置颜色时,将能看到实线条,推测该设置更改了某个设置线条的值
            # 以下5个参数来自2.0.4,在1.6.1版本中未验证
    #         max_=100,# 最大数值
    #         min_=0, # 最小数值
    #         is_piecewise=True, # 是否将数值分组展示,默认渐变,不分组
    #         range_color=['#8FFF88FF','#FFB37FFF','#DE3333FF'] # 渐变颜色组
        ),
    #     toolbox_opts = opts.ToolboxOpts()
                   )
    
    timeline.add(map, my_map)# 添加单个图到对应时间线中
timeline.add_schema(is_auto_play=False, play_interval=1000)# 设置是否自动循环播放和播放间隔
timeline.render('测试地图-timeline.html')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值