专栏首页快学PythonPython制作可视化大屏全流程!(代码分享)

Python制作可视化大屏全流程!(代码分享)

大家好,我是小五🧐

前两天发了一篇《用Python制作可视化大屏,特简单!》,留言区非常火爆,发现大家都对可视化部分非常感兴趣。

而恰好大屏可视化这一部分又没太细讲,今天就详细讲一下Pyecharts制作可视化大屏。

注意,本文由于篇幅问题不会放置全部代码,会在文末提供全部代码的下载。

承接上文《用Python制作可视化大屏,特简单!》,不再赘述数据爬取和数据预处理。

ECharts是由百度开源的基于JS的商业级数据图表库,有很多现成的图表类型和实例,而Pyecharts则是为了方便我们使用Python实现ECharts的绘图。使用Pyecharts制作可视化大屏,可以分为两步:

1、使用分别Pyecharts分别制作各类图形;

2、使用Pyecharts中的组合图表功能,将所有图片拼接在一张html文件中进行展示。

小五认为影响大屏美观最重要的两个因素就是:配色布局!在本文中,会特意强调这两点。

Pyecharts可视化

本文缩减了图表,只选用2020东京奥运会各国金牌分布图、2020东京奥运会奖牌榜详情、2020东京奥运会中国各项目获奖详情。

这类图表都很简单,参照官方文档直接复制示例就可以学习。图表配色都使用的Pyecharts默认颜色,大家实际使用时尽量形成自己的风格。

Map世界地图

Pyecharts绘制世界地图时,名称必须是英文。所以我们在前文中引入了国家名称中英文对照表,左连接形成了df4

df4

单独提取英文名称和奖牌总数两列数据,用来可视化。

data_list=[[i,j] for i,j in zip(df4['英文名称'],df4['奖牌总数'])]
data_list[:5]

数据准备好了,开始利用pyecharts绘制世界地图。

from pyecharts import options as opts
from pyecharts.charts import Map

c = (
    Map()
    .add("", data_list, "world",
          is_map_symbol_show=False,
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="2020东京奥运会各国金牌分布图"),
        visualmap_opts=opts.VisualMapOpts(max_=100)
    )
)

c.render_notebook()

非常简单

同理,依次绘制其他两类图形。

柱状图、饼图

柱状图(Bar)

from pyecharts import options as opts
from pyecharts.charts import Bar

c = (
    Bar()
    .add_xaxis(df4['名称'].head(25).tolist())
    .add_yaxis("金牌", df4['金牌'].head(25).tolist(), stack="stack1")
    .add_yaxis("银牌", df4['银牌'].head(25).tolist(), stack="stack1")
    .add_yaxis("铜牌", df4['铜牌'].head(25).tolist(), stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12, color='#FFFFFF'))
    .set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会奖牌榜详情"),
                     xaxis_opts=opts.AxisOpts(type_='category',
                                              axislabel_opts=opts.LabelOpts(
                                                  rotate=45),
                                              )))
c.render_notebook()

2020东京奥运会奖牌榜详情

饼图(Pie)

from pyecharts import options as opts
from pyecharts.charts import Pie

c = (
    Pie()
    .add("", [['跳水', 12], ['射击', 11], ['举重', 8], ['竞技体操', 8], ['乒乓球', 7], ['游泳', 6], ['羽毛球', 6], ['田径', 5], ['静水皮划艇', 3], ['蹦床体操', 3], ['自由式摔跤', 3], ['赛艇', 3], ['空手道', 2], ['拳击', 2], ['帆船', 2], ['花样游泳', 2], ['跆拳道', 1], ['场地自行车赛', 1], ['古典式摔跤', 1], ['击剑', 1], ['三人篮球', 1]],
         center=["50%", "60%"],)
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render_notebook()

2020东京奥运会中国各项目获奖详情

这样需要用到的三张图表就绘制好了。

Pyecharts组合图表

Pyecharts进行可视化大屏第二步就是组合图表,大致可分为四类:

  • Grid:并行多图
  • Page:顺序多图
  • Tab:选项卡多图
  • Timeline:时间线轮播多图

官方文档:https://pyecharts.org/#/zh-cn/composite_charts

这里用Page(顺序多图)居多,在组合图表之前,还要先把前面的图表绘制代码改为函数。

def map_world() -> Map:
    c = (
        Map(init_opts=opts.InitOpts(chart_id=2, bg_color='#ADD8E6'))
        .add("", data_list, "world",
             is_map_symbol_show=False,
             )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="2020东京奥运会各国金牌分布图"),
            visualmap_opts=opts.VisualMapOpts(max_=100)
        )
    )
    return c

顺便还在其中增加了背景颜色bg_color、图表IDchart_id,后者用于多图表时定位区分。背景颜色的话,我选择了淡蓝色#ADD8E6。后续图片的布局是根据图表ID的对应关系进行布局,所以每张图都要分别设置其id。

接着使用page = Page(layout= Page.DraggablePageLayout)模式对图片进行展示,这一步是为了调整布局。

page = Page(layout=Page.DraggablePageLayout, page_title="2020东京奥运会奖牌榜")

# 在页面中添加图表
page.add(
    title(),
    map_world(),
    bar_medals(),
    pie_china(),)

page.render('test.html')

调用绘制函数后生成一个 test.html 文件。

打开后可以其中的图片进行拖拽,来实现自定义布局。

对图片布局完毕后,要记得点击左上角“save config”对布局文件进行保存。

点击后,本地会生成一个chart_config.json的文件,这其中包含了每个图表ID对应的布局位置。

最后,调用保存好的布局文件,重新生成html。

运行下面这行代码。

page.save_resize_html('test.html', cfg_file='chart_config.json', dest='奥运.html')

其中test.html 为生成的所有图表的文件、chart_config.json 为下载的布局文件、奥运.html 为布局好的的仪表盘文件、打开仪表奥运.html:

这样就实现了一次数据可视化——大屏展示。

但还有还有很多不足之处,比如若图表配色没有特殊去做调整。

整张大屏只是一个静态的展示,而非具有商业场景的数据仪表盘。

真正的数据大屏往往更喜欢用BI软件生成,能够实现图、表、切片器之间交叉筛选,希望以后有机会能用Python使用制作出来。

本文分享自微信公众号 - 快学Python(kxpython),作者:朱小五

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python制作可视化大屏全流程!(代码分享)

    承接上文《用Python制作可视化大屏,特简单!》,不再赘述数据爬取和数据预处理。

    Python研究者
  • Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的p...

    砸漏
  • 对比近10000个Python开源项目,我们精选出最实用的34个

    导读:踏着人工智能、区块链的东风,近年来一路“横冲直撞”的 Python 在实现了从小众语言到主流的完美转身后,进入 2019 依旧没有透出丝毫停下来的架势,反...

    华章科技
  • 这些工具你值得拥有

    是一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比于难于上手的...

    DataScience
  • 酷炫 | 比较6种类型和14种数据可视化工具

    开头先说一件重要的事情,最近联合几个小伙伴(有在校研究生博士以及工作的),共同建立了一个秋招互助交流群,希望在算法岗越来越积累的时期,帮助大家共同进步,多多交流...

    AI算法与图像处理
  • 实时音视频开发学习5 - 实现分享、音频和音量

    trtc的实践功能主要谈及两个模块,一个是web端,另一个为小程序端。这二者分别阐述了trtc的通话模式、直播模式、实时屏幕分享、云端流录制与回放CDN直播回放...

    金林学音视频
  • 一段蛋疼的代码:超不清视频播放器

    今天分享的这段代码,看起来没啥实际用处,而且有些反潮流,因为现如今大家看视频都追求更高分辨率的超清画质,而我们这个,是一个“超不清”的视频播放器:

    Crossin先生
  • 在原神里钓鱼,有人竟然用上了深度强化学习,还把它开源了

    就在今年 9 月,这款从开放公测起便屡次登顶国内外讨论热度和手游吸金榜第一的开放世界冒险游戏更新了版本,添加 / 丰富了地图,并且上线了一款小游戏——钓鱼。游戏...

    机器之心
  • GitHub 热点速览 Vol.23:前后端最佳实践

    以下内容摘录自微博 @HelloGitHub 的 GitHub Trending,选项标准:新发布 | 实用 | 有趣,根据项目 release 时间分类,发布...

    HelloGitHub
  • 利用Python来完成屏幕录制

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的p...

    py3study
  • 《HelloGitHub》第 65 期

    这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源...

    HelloGitHub
  • 透明小电视上线——GitHub 热点速览 v.21.05

    这周的 GitHub Trending 真是棒极了。小鱼干喜欢的科技博主又开源了他的硬件玩具,一个透明的小电视机,HG 的小伙伴看完项目,再买个电路板和分光棱镜...

    HelloGitHub
  • python黑科技:让你无所遁形,附源码!

    懂的人肯定看到标题就明白了,这就是木马程序,从第一句话就看得出来。注册表是个什么东西?这个是黑客、网络安全工程师必须精通的一项技术,所有的木马、病毒基本都是通过...

    猫咪编程
  • 盘点OSX上最佳的DevOps工具

    对于运维人员来说,他们往往需要各种各样的工具来应对工作需求,近日Dustin Collins通过“The Best DevOps Tools on OSX”一文...

    CSDN技术头条
  • 设置Python代码格式

    随着你编写的程序越来越长,有必要了解一些代码格式设置约定。请花时间让你的代码尽可能易于阅读;让代码易于阅读有助于你掌握程序是做什么的,也可以帮助他人理解你编写的...

    狼啸风云
  • 皮克斯动画特效太好,但特效师容易「手抖」,还好Python来帮忙

    一个从事影视后期的pipeline开发者小哥写了篇博客,讲述Python如何被特效电影所「重用」!

    新智元
  • 爆款游戏《贪吃蛇大作战》的 Python 实现

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核。媒体们除了之前竞相追捧《Pokemon Go》热闹了一把,似乎也听不到什么声音了。...

    Crossin先生
  • 如何让视频会议在小程序上开起来

    |导语  使用企业微信跨组织间会议门槛较高,要求外部客户或合作伙伴先建立在企业微信的线上组织才可入会,通过引入小程序入会能力,降低跨组织会议的门槛; 为解决微...

    腾讯大讲堂
  • 2020,建议搞个 Mac 玩玩!

    本文主要记录Mac开发环境的设置,以及一些优秀软件,使用技巧等。所有的设置、软件以及技巧都追求极致简洁和极致效率,最大可能提升工具效率,提升生产力。当然大家如果...

    逆锋起笔

扫码关注云+社区

领取腾讯云代金券