Skip to main content
 Web开发网 » 编程语言 » Python语言

手把手教你用 Python 制作数据可视化大屏

2021年11月27日8180百度已收录

关注我@DailyGitHub ,更多有用、有趣的技术干货等着你!欢迎点赞、收藏、转发!

前段时间给大家分享了:超赞!20个炫酷的数据可视化大屏(含源码),很多小伙伴都非常喜爱。如果你感兴趣,点击上方获取即可。于是我产生了用 Python 的另外一种方式来实现数据可视化大屏的想法。

手把手教你用 Python 制作数据可视化大屏  Python数据可视化 第1张

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

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

如果你还没有安装 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 = '\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()就能得到如下数据地图:

手把手教你用 Python 制作数据可视化大屏  Python数据可视化 第2张

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

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

评论列表暂无评论
发表评论
微信