pyecharts可视化——地图

def echarts_map(province,data,title = '主标题',subtitle = '副标题',label = '图例'):
    """
    province:传入省份List
    data:传入各省对应的数据List
    title:主标题
    subtitle:副标题
    label:图例
    """
    map_ = Map(
            init_opts=opts.InitOpts(
            bg_color='#080b30',  # 设置背景颜色
            theme='dark'         # 设置主题
            # width='980px',     # 设置图的宽度
            # height='800px'     # 设置图的高度
            )
    )
    map_.add(label,[list(i) for i in zip(province,data)])
    map_.set_global_opts(
        # 标题设置
        title_opts=opts.TitleOpts(
            title=title, # 主标题
            subtitle=subtitle, # 副标题
            pos_left='center',  # 标题展示位置
            title_textstyle_opts=dict(color='#fff') # 设置标题字体颜色
        ),
        # 图例设置
        legend_opts=opts.LegendOpts(
            is_show=True, # 是否显示图例
            pos_left='right', # 图例显示位置
            pos_top='3%',  #图例距离顶部的距离
            orient='horizontal'  # 图例水平布局
        ),
        visualmap_opts = opts.VisualMapOpts(max_ = int(data.max()),is_piecewise = False)
    )
    return map_.render_notebook()

写完函数之后:

change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',
                ascending = False)

echarts_map(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'
            ,subtitle = '成交金额在全国各地分布情况',label = '成交金额')

其实更新版本的pyecharts中,还可以画3D地图:

def map3d_with_bar3d(province,data_lis,title = '主标题',subtitle = '副标题',label = '图例'):
    """
    province:传入省份的List
    data_lis:传入省份对应的数据的List
    title:主标题
    subtitle:副标题
    label:图例
    """
    data_dict = {'黑龙江': [127.9688, 45.368], '上海': [121.4648, 31.2891],
            '内蒙古': [110.3467, 41.4899], '吉林': [125.8154, 44.2584],
            '辽宁': [123.1238, 42.1216], '河北': [114.4995, 38.1006],
            '天津': [117.4219, 39.4189], '山西': [112.3352, 37.9413],
            '陕西': [109.1162, 34.2004], '甘肃': [103.5901, 36.3043],
            '宁夏': [106.3586, 38.1775], '青海': [101.4038, 36.8207],
            '新疆': [87.9236, 43.5883], '西藏': [91.11, 29.97],
            '四川': [103.9526, 30.7617], '重庆': [108.384366, 30.439702],
            '山东': [117.1582, 36.8701], '河南': [113.4668, 34.6234],
            '江苏': [118.8062, 31.9208], '安徽': [117.29, 32.0581],
            '湖北': [114.3896, 30.6628], '浙江': [119.5313, 29.8773],
            '福建': [119.4543, 25.9222], '江西': [116.0046, 28.6633],
            '湖南': [113.0823, 28.2568], '贵州': [106.6992, 26.7682],
            '广西': [108.479, 23.1152], '海南': [110.3893, 19.8516],
            '广东': [113.28064, 23.125177], '北京': [116.405289, 39.904987],
            '云南': [102.71225, 25.040609], '香港': [114.165460, 22.275340],
            '澳门': [113.549130, 22.198750], '台湾': [121.5200760, 25.0307240]}
    for item in [list(z) for z in zip(province, data_lis)]:
        data_dict[item[0]].append(item[1])
    example_data = list(zip(data_dict.keys(),data_dict.values()))

    map_3d = Map3D(
        init_opts=opts.InitOpts(
        bg_color='#080b30',  # 设置背景颜色
        theme='dark',         # 设置主题
        # width='1200px',     # 设置图的宽度
        # height='1000px'     # 设置图的高度
        )
    )
    map_3d.add_schema(
        itemstyle_opts=opts.ItemStyleOpts(
            color="rgb(5,101,123)",
            opacity=1,
            border_width=0.8,
            border_color="rgb(62,215,213)",
        ),
        map3d_label=opts.Map3DLabelOpts(
            is_show=False,
            formatter=JsCode(
                "function(data){return data.name + " " + data.value[2];}"
            ),
        ),
        emphasis_label_opts=opts.LabelOpts(
            is_show=False,
            color="#fff",
            font_size=10,
            background_color="rgba(0,23,11,0)",
        ),
        light_opts=opts.Map3DLightOpts(
            main_color="#fff",
            main_intensity=1.2,
            main_shadow_quality="high",
            is_main_shadow=False,
            main_beta=10,
            ambient_intensity=0.3,
        )
    )
    map_3d.add(
        series_name=label,
        data_pair=example_data,
        type_=ChartType.BAR3D,
        bar_size=1,
        shading="lambert",
        label_opts=opts.LabelOpts(
            is_show=True,
            formatter=JsCode(
                "function(data){return data.name + ' ' + data.value[2];}"
            ),
        ),
    )
    map_3d.set_global_opts(
    # 标题设置
        title_opts=opts.TitleOpts(
            title= title, # 主标题
            subtitle= subtitle, # 副标题
            pos_left='center',  # 标题展示位置
            title_textstyle_opts=dict(color='#fff') # 设置标题字体颜色
        ),
    # 图例设置
        legend_opts=opts.LegendOpts(
            is_show=True, # 是否显示图例
            pos_left='right', # 图例显示位置
            pos_top='3%',  #图例距离顶部的距离
            orient='horizontal'  # 图例水平布局
        ),
    )
    return map_3d.render_notebook()
change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',
                ascending = False)
map3d_with_bar3d(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'
            ,subtitle = '成交金额在全国各地分布情况',label = '成交金额')

其实3D图,未必是中国地图,还可以其他地图;上面也未必是柱状图,也可以是热力图,流向图,散点图,线状图等等。

可以参考:

​​​​​​pyecharts终于更新啦!| pyecharts-Map3D画3D立体地图_philpy_used的博客-CSDN博客_pyecharts画3d图

数据分析可视化(四)|Pyecharts制作地图的几种方法评析 - 云+社区 - 腾讯云

我觉得还可以利用他来画OD图哈哈哈。

可以查看官网更新:

pyecharts - A Python Echarts Plotting Library built with love. 

参考链接: 工作台 - Heywhale.com

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值