pyecharts基于Bmap绘制地理图标,制作景点客源分布图,数据位置上标明散点,散点大小和颜色随着数值进行变化

pyecharts是一个由百度开源的数据可视化库,具有良好的交互性,能够制作很多精巧的图表。其中该库的Bmap类能够调用百度地图,在百度地图上制作图表。
此次笔者就使用Bmap,根据某地景点的数据,制作该景点的客源分布图。
先上效果图:
在这里插入图片描述
说明
笔者使用的pyecharts版本是1.7.1,如果使用0.x版本不知道是否可行,因为两个版本代码差异较大。在绘制过程中可能会遇到一些问题,可以参考:
from pyecharts import options as opts报错问题以及解决办法

pyecharts 1.7.1手动安装
(所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置)解决办法
前期工作
由于使用Bmap类绘制地理图表时要调用百度地图,因此要先申请百度地图开发者AK。
首先注册百度账号,然后在打开百度开放平台,点击控制台,进入控制台页面,然后激活个人开发者账号,这样就可以使用该平台。
在这里插入图片描述
在控制台页面,点击应用管理——>我的应用——>创建应用,创建一个应用。
在这里插入图片描述
输入应用名称,应用类型选择浏览器端,在白名单中输入*,点击提交即可创建应用。
在这里插入图片描述
提交完成后在我的应用中即可看到所创建的应用,记住应用的AK值,使用该值调用百度地图的API。如图:
在这里插入图片描述

开始绘图
首先导入需要的包:

from pyecharts import options as opts
from pyecharts.charts import BMap,Geo
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode

然后写.add_schema类:其中baidu_ak要写自己申请的AK值。

    .add_schema(
        baidu_ak="自己的AK值",
        center=[104.114129, 37.550339],    # 当前视角的中心点,用经纬度表示
        zoom=5,         # 当前视角的缩放比例
        is_roam=True,   # 是否开启鼠标缩放和平移漫游
        )

接着写.add类,进行地图配置,其中formatter参数是标签内容格式器,其中formatter=’{a}‘可以显示系列名,formatter=’{b}‘可以显示数据名,formatter=’{c}‘可以显示数值数组,例如数据(北京,100),”北京”为数据名,“100”为数据值,但是如果使用formatter=’{c}’,显示的是一个数值数组[经度,纬度,数据值],而不是数据值本身。因此,此处使用回调函数将数据值进行显示。

.add(   
        type_="effectScatter",          #涟漪效果
        series_name="",    #不使用的话,地图上方会有一个小点     
        data_pair=data,
        symbol_size=10,
        effect_opts=opts.EffectOpts(),
        label_opts=opts.LabelOpts(
            position="top",  #标签位置
            is_show=True,   #is_show是否显示标签,点上面的内容
            formatter=JsCode(                  #formatter为标签内容格式器{a}:系列名;{b}:数据名;{c}:数值数组也可以是回调函数    
                    """function(params) {
                    if ('value' in params.data) {
                        return params.data.value[2];
                    }
                }"""
                ),#显示数据,可以去掉经纬度只显示数值return params.data.value[2] + ': ' + params.data.value[0]+': ' + params.data.value[1];
            ), 
        itemstyle_opts=opts.ItemStyleOpts(),
        is_selected=True,  #选中图例
    )

接下来写.set_global_opts类进行全局配置,其中opts.VisualMapOpts可用来配置散点的大小和颜色随着数值进行变化。

.set_global_opts(
        title_opts=opts.TitleOpts(
            title="中新天津生态城游客客源分布图",
            subtitle="(国庆节期间)",
            pos_left="center",
            title_textstyle_opts=opts.TextStyleOpts(color="#fff"),       #文字样式配置
        ),
        tooltip_opts=opts.TooltipOpts(        #标签配置,选中某一个点显示的框
            trigger="item",                 #触发类型,item主要用于散点图
            formatter=JsCode(             #显示提示框formatter为标签内容格式器{a}:系列名;{b}:数据名;{c}:数值数组也可以是回调函数
                    """function(params) {
                    if ('value' in params.data) {
                        return params.data.name + '<br>' + params.data.value[2];
                    }
                }"""
                ),#显示数据,可以去掉经纬度,只显示数值return params.data.value[2] + ': ' + params.data.value[0]+': ' + params.data.value[1];
        ),  
        visualmap_opts=opts.VisualMapOpts(   #视觉映射配置
            pos_top="10",       #图例离顶部的距离
            pos_left="10",     #图例离左边边框的距离
            type_ = "size",  # 映射过渡类型,可选,"color", "size"  (颜色映射还是大小映射)(重要!!!)
            #其中color参数使点的颜色随着数值进行变化,size参数使点的
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值