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

前段时间,给大家分享过 20 个炫酷的数据可视化大屏,源代码都是基于 echarts 的,于是我产生了用 Python 来实现数据可视化大屏的想法。

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

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

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

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

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

# 声明 Notebook 类型,必须在引入 pyecharts.charts 等模块前声明
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB


# 导入相关库
from pyecharts import options as opts
from pyecharts.charts import Map
from 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 = '\t\t2016年到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()

就能得到如下数据地图:

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

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

喜欢文章的话,点个“在看”哦

  • 5
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值