使用Pyecharts库绘制Python数据可视化的geo类地图

文章目录

  • 前言
  • 中文官方文档和社区
  • 一、什么是geo类地图?
  • 二、绘制geo类散点地图
  • 三、geo类地图的点样式设置
  • 四、geo动态轨迹图
  • 五、根据经纬度绘制点生成局部图
  • 总结
  • 前言

    我们知道,在数据可视化中的地图可视化分为map类地图和geo类地图,而现在我将介绍geo类地图,会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着我来一起学习学习吧!(由于我是一位初学者,若有不对的还望大家多多指教,蟹蟹~)

    中文官方文档和社区

    1.中文官网文档
    它包含pyecharts中各个功能和图形的介绍和代码参数解析。链接如下:

    https://pyecharts.org/#/zh-cn/intro

    2.社区
    它包含各种图形demo的项目案例代码和演示。链接如下:

    https://gallery.pyecharts.org/#/README

    【工具】查询颜色代码网站

    http://tools.jb51.net/color/colorpicker

    一、什么是geo类地图?

    地图是我们在日常的数据可视化分析中是很常见的一种展示手段,不仅美观而且很大气,尤其是在大屏展示中更是扮演着必不可缺的角色。而geo类地图和map类地图最大的区别在于geo地图擅长画“点”,可以是根据经纬度画出坐标点,也可以根据地区名称画出该地区代表的点。

    与map不同在于:
    map中add的时候需要添加地图属性’china’,但是geo中只需要额外添加一句:geo.add_schema(maptype=“china”) # 设置地图类型

    安装Pyecharts库
    我们都知道pyecharts是一种非常强大的绘图python库,绘制的图形非常好看,并且有代表性,不仅仅是地图,还可以绘制条形图、饼图、词云图等等。所以我们现在绘制地图需要先安装pyecharts库,大家可到windows中搜索Anaconda Prompt (anaconda)【或者Win+R——cmd】并打开,使用以下两种任意方法运行即可:
    方法一:

    pip install pyecharts

    方法二(使用清华镜像):

    pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple

    由于使用map需要在anaconda中下载地图拓展包,请大家下载以下拓展包(新版anaconda已经不需要手动下载):

    pip install echarts-countries-pypkg
    pip install echarts-china-provinces-pypkg
    pip install echarts-china-cities-pypkg
    pip install echarts-china-counties-pypkg
    pip install echarts-china-misc-pypkg
    pip install echarts-united-kingdom-pypkg

    二、绘制geo类散点地图

    从数据结构上看,geo对象接收的数据也是二维数组。
    1.引入相关map包
    代码如下:

    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.faker import Faker
    

    注意:运行代码前请使用正确的解释器(例如)


    2.绘制geo类散点地图
    代码如下:

    c = (
        Geo()
        .add_schema(maptype="china")
        .add("geo", [list(z) for z in zip(Faker.provinces, Faker.values())])
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-基本示例")
        )
        .render("geo_base.html")
    )
    

    效果图可以在VScode运行结果查看,也可以在目录中找到对应的html文件打开效果图(右键选择在浏览器打开或者在页面使用快捷键Ctrl+1)

    效果图如下所示:

    geo类散点地图的社区代码链接:

    https://gallery.pyecharts.org/#/Geo/geo_base

    三、geo类地图的点样式设置

    由于点样式设置在社区有提供代码,我将不展示涟漪散点地图和热力地图的代码。

    1.涟漪散点地图社区代码链接如下:

    https://gallery.pyecharts.org/#/Geo/geo_effectscatter

    2.热力地图社区代码链接如下:

    https://gallery.pyecharts.org/#/Geo/geo_heatmap

    四、geo动态轨迹图

    1.引入相关map包
    代码如下:

    from pyecharts import options as opts
    from pyecharts.charts import BMap
    from pyecharts.globals import ChartType
    from pyecharts.charts import Geo
    from pyecharts.globals import ChartType, SymbolType
    

    2.绘制点之间的箭头

    首先在中国地图上设置你想要设置的点

    代码如下:

    c = (
        Geo()
        .add_schema(maptype="china")
        .add(
            "",
            [("南宁", 1), ("北京", 66), ("湖南", 77), ("重庆", 88), ("四川", 99), ("上海", 111), ("云南", 88)],
            type_=ChartType.EFFECT_SCATTER, # 点样式
            color="#FF6666",
            label_opts=opts.LabelOpts(is_show=True,formatter='{b}') # 配置点的标签
        )
    

    其次设置箭头所处于的起始点与终止点。

    代码如下:

     .add(
            "",
            [("南宁", "北京"), ("南宁", "湖南"), ("南宁", "重庆"), ("南宁", "四川"), ("南宁", "上海"), ("南宁", "云南")],
            type_=ChartType.LINES, 
            effect_opts=opts.EffectOpts(
                symbol='arrow',  # 移动点的样式
                symbol_size=10, 
                color="#FFCCCC"
            ),
            linestyle_opts=opts.LineStyleOpts(curve=0.2, # 线条弧度
                                             type_='solid' # 线条类型
                                             ),
            label_opts=opts.LabelOpts(is_show=False) # 配置线的标签
        )
    

    完整代码

    from pyecharts import options as opts
    from pyecharts.charts import BMap
    from pyecharts.globals import ChartType
    from pyecharts.charts import Geo
    from pyecharts.globals import ChartType, SymbolType
    c = (
        Geo()
        .add_schema(maptype="china")
        .add(
            "",
            [("南宁", 1), ("北京", 66), ("湖南", 77), ("重庆", 88), ("四川", 99), ("上海", 111), ("云南", 88)],
            type_=ChartType.EFFECT_SCATTER, # 点样式
            color="#FF6666",
            label_opts=opts.LabelOpts(is_show=True,formatter='{b}') # 配置点的标签
        )
        .add(
            "",
            [("南宁", "北京"), ("南宁", "湖南"), ("南宁", "重庆"), ("南宁", "四川"), ("南宁", "上海"), ("南宁", "云南")],
            type_=ChartType.LINES, 
            effect_opts=opts.EffectOpts(
                symbol='arrow',  # 移动点的样式
                symbol_size=10, 
                color="#FFCCCC"
            ),
            linestyle_opts=opts.LineStyleOpts(curve=0.2, # 线条弧度
                                             type_='solid' # 线条类型
                                             ),
            label_opts=opts.LabelOpts(is_show=False) # 配置线的标签
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="南宁市Geo线段"))
    )
    c.render_notebook()
    

    效果图如下所示:
    (以下点为我想去旅游的城市哈哈哈哈,大家可随意选择点)

    五、根据经纬度绘制点生成局部图

    1.引入相关map包
    代码如下:

    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.globals import ChartType, SymbolType
    

    2.根据经纬度绘制点

    添加一个坐标点或者绘制某一个点(需要该点的经纬度)
    查询经纬度位置 (在浏览器打开,在该地址后面,加上你要查询的地址),再依次设置字体样式。

    代码如下:

    g = Geo()
    g.add_schema(maptype="广西")
    g.add_coordinate('兴宁区', 108.6383056640625,23.980397108430427)
    g.add(
        "",
        data_pair = [('兴宁区',10)],
        type_=ChartType.EFFECT_SCATTER, 
        symbol_size=5
    )
    g.set_series_opts(label_opts = opts.LabelOpts(formatter = '{b}',# 不设置标签格式自动显示纬度数值
                                                 font_size = 20
                                                 )
                     ) 
    

    完整代码:

    from pyecharts import options as opts
    from pyecharts.charts import Geo
    from pyecharts.globals import ChartType, SymbolType
    g = Geo()
    g.add_schema(maptype="广西")
    g.add_coordinate('兴宁区', 108.6383056640625,23.980397108430427)
    g.add(
        "",
        data_pair = [('兴宁区',10)],
        type_=ChartType.EFFECT_SCATTER, 
        symbol_size=5
    )
    g.set_series_opts(label_opts = opts.LabelOpts(formatter = '{b}',# 不设置标签格式自动显示纬度数值
                                                 font_size = 20
                                                 )
                     ) 
    g.render_notebook()
    

    效果图如下所示:
    (以下点为我生活的市区,同学们可随意选择点)

    总结

    以上为我在学习数据可视化中关于geo类地图简单的学习实践,若有问题还请同学们在评论区中指正。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用Pyecharts库绘制Python数据可视化的geo类地图

    发表评论