用 pyecharts 制作数据可视化大屏之数据地图

林骥
林骥
林骥
44
文章
0
评论
2021-08-0914:27:17 评论 99 2020字
摘要

你好,我是林骥。前段时间,我看到 20 个炫酷的数据可视化大屏,源代码都是基于 echarts 的,于是我产生了用 Python 来实现数据可视化大屏的想法。

 

用 pyecharts 制作数据可视化大屏之数据地图

参考上面这个模板,我计划用 pyecharts 实现一个类似的数据可视化大屏。

今天先绘制中间的数据地图,为了方便演示,我们采用一个超市数据集,数据来源于 Tableau 官方示例。

用电脑下载到本地之后,把 Excel 数据文件保存到 data 文件夹中。

如果你还没有安装 pyecharts,那么请先打开命令行,运行以下代码:

  •  
  •  
# 安装或更新 v1 以上版本,目前是 1.9.0pip3 install pyecharts -U

在 Jupyter Lab 中新建一个 Notebook,运行以下代码:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 声明 Notebook 类型,必须在引入 pyecharts.charts 等模块前声明from pyecharts.globals import CurrentConfig, NotebookTypeCurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB# 导入相关库from pyecharts import options as optsfrom pyecharts.charts import Mapfrom pyecharts.globals import ThemeType import pandas as pd# 从 data 文件夹读取 Excel 中的数据df = pd.read_excel("./data/超市数据.xlsx")# 用数据透视表的方法汇总各省销售额province_sale = df.pivot_table(values="销售额", index="省/自治区", aggfunc=sum)# 把数据整理成绘图所需的列表格式,规范名称,销售额换算成万元,保留一位小数list_province_sale = [list(z) for z in zip(province_sale.index.str.replace("自治区", ""), round(province_sale.销售额/10000, 1))]# 求各省销售额的最大值max_sale = round(province_sale.销售额.max()/10000,0)# 标题,数字千分位格式显示title = "{:,}".format(int(province_sale.销售额.sum()))# 副标题subtitle = "		2016年到2019年总销售额"# 绘制地图c = (    # 主题样式和背景颜色    Map(init_opts=opts.InitOpts(theme=ThemeType.SHINE, chart_id=1, bg_color="#00589F"))    # 添加地图数据    .add("", list_province_sale, "china")     # 全局配置    .set_global_opts(        # 标题文字        title_opts=opts.TitleOpts(title=title,                                   # 副标题                                  subtitle=subtitle,                                   # 标题位置                                  pos_left="39%", pos_top=20,                                   # 标题颜色和大小                                  title_textstyle_opts=opts.TextStyleOpts(color="#FBC171", font_size=36),                                   # 副标题颜色和大小                                  subtitle_textstyle_opts=opts.TextStyleOpts(color="#CCCCCC", font_size=15)),        # 可视化组件参数        visualmap_opts=opts.VisualMapOpts(            # 最大值            max_=max_sale,             # 显示精确的分段值            is_piecewise=True,            # 图例位置            pos_left="30%", pos_bottom=10,             # 图例字体颜色            textstyle_opts=opts.TextStyleOpts(color="#FFFFFF")))     # 隐藏文字标签    .set_series_opts(label_opts=opts.LabelOpts(is_show=False)))# 在 Jupyter Lab 中第一次渲染时需要调用_ = c.load_javascript()

然后,运行以下代码:

  •  
  •  
# 需要与 load_javascript 在不同的单元格中运行c.render_notebook()

就能得到如下数据地图:

用 pyecharts 制作数据可视化大屏之数据地图

对于颜色的深浅和气泡的大小,我们的感知能力其实是比较弱的,通常很难精准地判断差异。

从有效传递信息的角度来看,林骥认为上面这种分段式的数据地图,比普通的热力地图和气泡地图更加有效。

 

 

End.

爱数据网专栏作者:林骥

作者介绍:数据赋能者,专注数据分析 10 多年。

个人公众号:林骥(linjiwx)

本文为挖数网专栏作者原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0520)

更多文章前往爱数据社区网站首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: