信息发布→ 登录 注册 退出

Python+pyecharts绘制交互式可视化图表

发布时间:2026-01-11

点击量:
目录
  • 一、热力图
  • 二、地理图表
    • 2.1 地理坐标系
    • 2.2 市区地图
    • 2.3人口流动图
    • 2.4 3D地图
    • 2.5 3D地球
  • 三、疫情数据可视化
    • 四、空气质量数据可视化
      • 五、外卖点分布数据可视化
        • 六、总结

          本篇我们来了解一个新的可视化模块pyecharts,由于爬虫敏感问题,博主对数据已经提取供大家使用,本篇文章仅介绍数据可视化。

          一、热力图

          案例:绘制2025部分城市的GDP热力图(比如上海,北京,深圳,重庆,长沙的2025年总GDP),data为一个列表,每个城市数据用元祖表示,比如:(‘上海’,43214.85)。

          from pyecharts.charts import Geo
          from pyecharts import options as opts
          from pyecharts.globals import ChartType
          
          data=[('上海',43214.85),('北京',40269.60),('深圳',30664.85),('重庆',27894.02),('长沙',13270.70)]
          geo = (Geo()
           .add_schema(maptype="china")
           .add("人口", data,
           type_=ChartType.HEATMAP)
           .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
           .set_global_opts(
           visualmap_opts=opts.VisualMapOpts(),
           legend_opts=opts.LegendOpts(is_show=False),
           title_opts=opts.TitleOpts(title="Geo-全国GDP图"))
           )
           
          geo.render_notebook()
          

          运行如下:

          二、地理图表

          2.1 地理坐标系

          案例一:绘制2025部分省份的人口数量在地图中

          2.2 市区地图

          案例:标出2025部分省份的人口数量在地图中

          from pyecharts.charts import Map
          
          data=[('福建',41540086),('广东',126012510),('河北',74610235),('山西',34915616),('四川',83674866)]
          print(data)
          geo = (
             Map()
            .add("", data, 'china')
          )
          geo.render_notebook()
          

          例如:绘制上海市各个区的平均房价交互式地图

          from pyecharts.charts import Geo
          from pyecharts import options as opts
          from pyecharts.globals import ChartType
          
          data=[('上海',43214.85),('北京',40269.60),('深圳',30664.85),('重庆',27894.02),('长沙',13270.70)]
          geo = (Geo()
           .add_schema(maptype="china")
           .add("人口", data,
           type_=ChartType.HEATMAP)
           .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
           .set_global_opts(
           visualmap_opts=opts.VisualMapOpts(),
           legend_opts=opts.LegendOpts(is_show=False),
           title_opts=opts.TitleOpts(title="Geo-全国GDP图"))
           )
           
          geo.render_notebook()
          

          运行如下:

          2.3人口流动图

          案例:河南省人口输出到外省的人口量。依次向广东,浙江,江苏,上海,北京传输人口277.36,246.59,219.72,134.3.127.1万人。

          from pyecharts import options as opts
          from pyecharts.charts import Geo
          from pyecharts.globals import ChartType, SymbolType
          
          c = (
              Geo()
              .add_schema(maptype="china")
              .add(
                  "",
                  [("广东",277.36), ("浙江", 246.59), ("江苏", 219.72), ("上海", 134.3),('北京',127.1)],
                  type_=ChartType.EFFECT_SCATTER,
                  color="white",
              )
              .add(
                  "geo",
                  [("河南", "广东"), ("河南", "浙江"), ("河南", "江苏"), ("河南", "上海"),('河南','北京')],
                  type_=ChartType.LINES,
                  effect_opts=opts.EffectOpts(
                      symbol=SymbolType.ARROW, symbol_size=6, color="blue"
                  ),
                  linestyle_opts=opts.LineStyleOpts(curve=0.2),
              )
              .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
              .set_global_opts(title_opts=opts.TitleOpts(title="河南省主要人口输出"))
          )
          c.render_notebook()
          

          运行如下:

          2.4 3D地图

          案例:绘制福建,广东,河北,山西,四川,新疆的2025总人口数量,绘制到3D地图上

          from pyecharts import options as opts
          from pyecharts.charts import Map3D
          from pyecharts.globals import ChartType
          
          data=[('福建',41540086),('广东',126012510),('河北',74610235),('山西',34915616),('四川',83674866),('新疆',2585.23)]
          
          map3d = (
              Map3D()
              .add("部分省人口数量(单位:万)", data_pair=data, maptype='china')
          )
          map3d.render_notebook()
          

          2.5 3D地球

          案例:绘制一个立体的3D地球

          from pyecharts.faker import POPULATION
          from pyecharts.charts import MapGlobe
          
          globe = (
              MapGlobe()
              .add_schema()
              .add(
                  series_name="",
                  maptype="world",
                  data_pair=POPULATION[1:]
              )
          )
          
          globe.render_notebook()
          

          如下:

          三、疫情数据可视化

          本小节做一个简单的案例,轻松简单的做一个疫情数据显示屏,由于爬虫知识敏感问题,所以这里作者直接把数据拿出来了,数据日期为2025年4月24日数据,数据来源:丁香医生。数据仅供参考,不作任何用途。

          from pyecharts.charts import Map
          from pyecharts import options as opts
          
          data=[['香港', 328074], ['台湾', 56468], ['上海', 43782], ['吉林', 39903],
                ['浙江', 2984], ['黑龙江', 2851], ['广东', 6981], ['江西', 1184], 
                ['江苏', 2175], ['福建', 3002], ['山东', 2676], ['北京', 1876], 
                ['广西', 1572], ['山西', 413], ['海南', 288], ['青海', 88], 
                ['云南', 2114], ['四川', 1999], ['河南', 2878], ['湖南', 1362], 
                ['陕西', 3276], ['河北', 1993], ['内蒙古', 1706], ['安徽', 1063],
                ['辽宁', 1614], ['湖北', 68398], ['天津', 1800], ['重庆', 694], 
                ['贵州', 179], ['新疆', 999], ['甘肃', 681], ['宁夏', 122], 
                ['*', 82], ['西藏', 1]]
          
          print(data)
          
          geo = (
             Map()
            .add("感染人数", data, 'china') # 传入数据,地图选择中国
          
          )
              
          geo.render_notebook()
          

          效果如下:

          为了让图更加优美,需要对它设置标签,颜色信息,所以添加set_global_opts方法,修改后代码如下:

          from pyecharts.charts import Map
          from pyecharts import options as opts
          
          data=[['香港', 328074], ['台湾', 56468], ['上海', 43782], ['吉林', 39903],
                ['浙江', 2984], ['黑龙江', 2851], ['广东', 6981], ['江西', 1184], 
                ['江苏', 2175], ['福建', 3002], ['山东', 2676], ['北京', 1876], 
                ['广西', 1572], ['山西', 413], ['海南', 288], ['青海', 88], 
                ['云南', 2114], ['四川', 1999], ['河南', 2878], ['湖南', 1362], 
                ['陕西', 3276], ['河北', 1993], ['内蒙古', 1706], ['安徽', 1063],
                ['辽宁', 1614], ['湖北', 68398], ['天津', 1800], ['重庆', 694], 
                ['贵州', 179], ['新疆', 999], ['甘肃', 681], ['宁夏', 122], 
                ['*', 82], ['西藏', 1]]
          
          print(data)
          
          geo = (
             Map()
            .add("感染人数", data, 'china') # 传入数据,地图选择中国
            .set_global_opts(
              title_opts=opts.TitleOpts(title="2025-4-23中国疫情地图"),
              visualmap_opts=opts.VisualMapOpts(max_=10000, is_piecewise=True,
                                              #最大数据范围,分段
                                              # 第一段设置为:猩红
                                                pieces=[
                                                    {"max": 99999, "min": 10001, "label": ">10000", "color": "#DC143C"},
                                                    {"max": 10000, "min": 1000, "label": "1000-10000", "color": "#8A0808"},
                                                    {"max": 999, "min": 500, "label": "500-999", "color": "#B40404"},
                                                    {"max": 499, "min": 100, "label": "100-499", "color": "#DF0101"},
                                                    {"max": 99, "min": 10, "label": "10-99", "color": "#F78181"},
                                                    {"max": 9, "min": 1, "label": "1-9", "color": "#F5A9A9"},
                                                    {"max": 0, "min": 0, "label": "0", "color": "#FFFFFF"},
                                                ],
                                               is_calculable=True) 
          )
          )
              
          geo.render_notebook()
          

          运行:

          pyecharts是图表是可以制作成网页的,作者在此留下一个思考:是否可以制作实时每天每小时更新的这样网页?当然,这留给感兴趣的同学去探索。因为设计爬虫,前端,数据分析,可视化。本书主要只介绍了数据可视化与数据分析。

          四、空气质量数据可视化

          案例:绘制身份的降雨量在地图上。(数据来源由作者随机设置,读者可以自行查看相关数据网站设置真实值)

          from pyecharts.charts import Map
          from pyecharts import options as opts
          
          
          attr_1= [95, 56, 87, 92, 74, 79, 82,68 , 59, 63, 82]
          value_1  = ["福建","河南","浙江","江西","贵州","四川","上海","北京","湖北","广西","河北"]
          # print([list(z) for z in zip(attr_1, value_1)])
          
          c = (
              Map()
              .add("空气质量", [list(z) for z in zip(attr_1, value_1)],"china") # 用列表推导式对两个列表合并成对应形式
          
              .set_global_opts(
                  title_opts=opts.TitleOpts(title="降雨量可视化"),
                  visualmap_opts=opts.VisualMapOpts(max_=100,is_piecewise=True                              
                                              )
              )
          )
          # c.render_notebook()
          c.render(r"1.html")
          

          运行如下:

          本次案例对图形保存为html格式文件,可以使用浏览器打开查看自己的图形。唯一的区别就是最后一行:c.render(r"1.html"),它所代表的含义为对图形保存为1.html文件,也就是网页文件。

          五、外卖点分布数据可视化

          案例:假设获取到美团与饿了么的部分省份骑手数量,对该数据同时绘制在一张图上。(数据由作者随意设置,仅供参考)

          from pyecharts import options as opts
          
          
          value_1 = [1500, 1300, 20000, 23000, 3500, 3400, 2500]
          attr_1 = ["福建","山东","北京","上海","江西","云南","重庆"]
          value_2 = [21000, 16520, 24120, 17820, 9542, 4689, 4325, 8950,]
          attr_2 = ["北京","广东","上海","浙江","四川","贵州","云南","重庆"]
          
          c = (
              Map()
              .add("饿了么", [list(z) for z in zip(attr_1, value_1)],"china")
              .add("美团", [list(z) for z in zip(attr_2, value_2)],"china")
              .set_global_opts(
                  title_opts=opts.TitleOpts(title="美团-饿了么骑手分布"),
                  visualmap_opts=opts.VisualMapOpts(max_=25000,is_piecewise=True)
              )
          )
          
          
          # c.render_notebook()
          c.render(r"2.html")
          

          效果如下:

          六、总结

          本篇文章带大家进入了一个新的数据可视化模块,它非常适合制作可视化大屏

          以上就是Python+pyecharts绘制交互式可视化图表的详细内容,更多关于Python pyecharts可视化图表的资料请关注其它相关文章!

          在线客服
          服务热线

          服务热线

          4008888355

          微信咨询
          二维码
          返回顶部
          ×二维码

          截屏,微信识别二维码

          打开微信

          微信号已复制,请打开微信添加咨询详情!