刷爆全网的动态条形图,只需5行Python代码就能实现!

从零开始学Python爬虫系列3.2.1: 让你爬取之后的数据相互追逐。bar chart race安装准备。不要忽略这篇文章,准备工作真的很重要。 把你爬取到的数据进行可视化操作,对于大部分人来说是必不可少的。你问我如何以最简单的方式画条形图竞赛图表?那我的答案只能是,去人家的官方网站,输入数据即可得。 (一)懒人必备:官方网站画图,可见即可得 Bar chart race包本来就是Flourish的团队写的,你如果懒得自己写代码,注册一个免费用户即可 https://app.flourish.studio/@flourish/bar-chart-race 优点: 1. 你可以随便调整参数,不需要知道任何代码 2. 其实你自己做一个动图需要 阅读详情

说起动态图表,最火的莫过于动态条形图了。

在B站上搜索「 数据可视化 」这个关键词,可以看到很多与动态条形图相关的视频。

好多视频都达到了上百万的播放量,属实厉害。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:961562169

目前网上实现动态条形图现成的工具也很多。

比如数可视的「 花火hanabi 」,嫡数的「 镝数图表 」,以及国外网站「 Flourish 」。

但是作为一名Pythoner,当然是想要研究一下如何用Python来实现。

之前也看过大佬们通过 Matplotlib 、 Plotly 、 Pyecharts 实现类似的功能,就是代码量有点多,看的脑瓜疼。

所以小F最近发现到了一个库「 Bar Chart Race 」,堪称Python界最强的动态可视化包。 

GitHub地址:

https://github.com/dexplo/bar_chart_race

文档地址: https://www.dexplo.org/bar_chart_race/

目前主要有0.1和0.2两个版本,0.2版本添加 动态曲线图 以及 Plotly实现的动态条形图 。 

库是挺好的,就是在安装上有点问题。 

在PyCharm的Project Interpreter上只能安装到0.1版本,功能不太全。

通过pip install bar_chart_race也只能到0.1版本。

最后小F选择 将项目从GitHub上下载下来 ,再进行安装 。 

下载压缩包,将解压后的文件夹放置在项目的venv/lib/python3.7/site-packages目录下。

在虚拟环境下打开文件夹,命令行运行如下命令完成安装。

cd 你的项目地址/venv/lib/python3.7/site-packages/bar_chart_race-master
python setup.py install

# 提示成功安装
# Finished processing dependencies for bar-chart-race==0.2.0

好了,安装成功后就可以引入这个第三方库。 

import bar_chart_race as bcr

# 如果出现SSL错误,则全局取消证书验证
# import ssl
# ssl._create_default_https_context = ssl._create_unverified_context

# 获取数据
df = bcr.load_dataset('covid19_tutorial')
# print(df)

# 生成GIF图像
bcr.bar_chart_race(df, 'covid19_horiz.gif')

生成了一个GIF图,具体如下。 

 

3行代码Python代码就实现了,对大佬封装好的库表示膜拜~

这里因为作者封装好了数据处理模块,只需要3行代码即可。

对于我们而言, 是需要加载自己的数据,自己进行处理 ,所以多了那么2行。

示例里的数据直接使用作者提供的,在data文件夹下的covid19_tutorial.csv文件( GitHub上有)。

经过其封装好的数据处理函数,得到最终的数据。 

另外作者还提供了很多配置参数,供大家选择。

01 动态条形图变动态柱状图

# orientation='v',生成柱状图
bcr.bar_chart_race(df, 'covid19_horiz.gif', orientation='v')

02 排序方式,默认为降序(desc)

# 设置排序方式,asc-升序
bcr.bar_chart_race(df, 'covid19_horiz.gif', sort='asc')

03 条目数限制,此处设置为最多出现6条

# 设置最多能显示的条目数,6条
bcr.bar_chart_race(df, 'covid19_horiz.gif', n_bars=6)

04 设置固定类目

# 选取如下5个国家的数据
bcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_order=['Iran', 'USA', 'Italy', 'Spain', 'Belgium'])

05 固定数值轴,使其不发生动态变化

# 设置数值的最大值,固定数值轴
bcr.bar_chart_race(df, 'covid19_horiz.gif', fixed_max=True)

06 图像帧数,默认10帧,此处设置为3帧,可以发现图像明显变得有些卡顿

# 图像帧数。数值越小,越不流畅。越大,越流畅。
bcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=3)

07 设置帧率,单位时间默认为500ms

# 设置20帧的总时间,此处为200ms
bcr.bar_chart_race(df, 'covid19_horiz.gif', steps_per_period=20, period_length=200) 

 

08 设置每帧增加的标签时间,默认为False

# 输出MP4
bcr.bar_chart_race(df, 'covid19_horiz.mp4', interpolate_period=True) 

09 绘图属性设置

# figsize-设置画布大小,默认(6, 3.5)
# dpi-图像分辨率,默认144
# label_bars-显示柱状图的数值信息,默认为True
# period_label-显示时间标签信息,默认为True
# title-图表标题
bcr.bar_chart_race(df, 'covid19_horiz.gif', figsize=(5, 3), dpi=100, label_bars=False,
                   period_label={'x': .99, 'y': .1, 'ha': 'right', 'color': 'red'},
                   title='COVID-19 Deaths by Country') 

10 配置标签文字大小

# bar_label_size-柱状图标签文字大小
# tick_label_size-坐标轴标签文字大小
# title_size-标题标签文字大小
bcr.bar_chart_race(df, 'covid19_horiz.gif', bar_label_size=4, tick_label_size=5,
                                 title='COVID-19 Deaths by Country', title_size='smaller')

11 全局文字属性

# shared_fontdict-全局字体属性
bcr.bar_chart_race(df, 'covid19_horiz.gif', title='COVID-19 Deaths by Country',
                                 shared_fontdict={'family': 'Helvetica', 'weight': 'bold',
                                                              'color': 'rebeccapurple'})

12 条形图属性,可以设置透明度,边框等

# bar_kwargs-条形图属性
bcr.bar_chart_race(df, 'covid19_horiz.gif', bar_kwargs={'alpha': .2, 'ec': 'black', 'lw': 3})

13 设置日期标签的时间格式

# 设置日期格式,默认为'%Y-%m-%d'
bcr.bar_chart_race(df, 'covid19_horiz.gif', period_fmt='%b %-d, %Y')

14 更改日期标签为数值

# 设置日期标签为数值
bcr.bar_chart_race(df.reset_index(drop=True), 'covid19_horiz.gif', interpolate_period=True, 
                                 period_fmt='Index value - {x:.2f}')

15 添加动态文本,此处为数值总数统计

# 设置文本位置、数值、大小、颜色等
def summary(values, ranks):
    total_deaths = int(round(values.sum(), -2))
    s = f'Total Deaths - {total_deaths:,.0f}'
    return {'x': .99, 'y': .05, 's': s, 'ha': 'right', 'size': 8}
# 添加文本
bcr.bar_chart_race(df, 'covid19_horiz.gif', period_summary_func=summary)

16 添加垂直条,可选类型有平均值、分位数等

# 设置垂直条数值,分位数
def func(values, ranks):
    return values.quantile(.9)
# 添加垂直条
bcr.bar_chart_race(df, 'covid19_horiz.gif', perpendicular_bar_func=func)

17 设置柱状图颜色,默认为dark24

# 设置柱状图颜色
bcr.bar_chart_race(df, 'covid19_horiz.gif', cmap='accent')

18 柱状图颜色不重复,上面这个图是有重复颜色的

# 去除重复颜色

bcr.bar_chart_race(df,  'covid19_horiz.gif' , cmap= 'accent'

True

)

这里有一些要注意的地方,比如 中文配置 ,以及自定义 颜色配置 。

中文配置只需在第三方库的「 _make_chart.py 」文件中,加入如下三行代码。

#中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  #Windows
plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB'] #Mac
plt.rcParams['axes.unicode_minus'] = False

现在在图表中加入中文,来看看结果。

import bar_chart_race as bcr
import pandas as pd

# 读取数据
df = pd.read_csv('yuhuanshui.csv', encoding='utf-8', header=0, names=['name', 'number', 'day'])
# 处理数据
df_result = pd.pivot_table(df, values='number', index=['day'], columns=['name'], fill_value=0)
# print(df_result)

# 生成图像
bcr.bar_chart_race(df_result, 'heat.gif', title='我是余欢水演职人员热度排行')

使用电视剧余欢水人物的「 百度指数 」数据。 

文件具体内容如下。

经过 数据透视表 处理后,得到与该库格式相同的数据。

想用自己的数据来做动态条形图, 5行代码 即可搞定 。 

bar_chart_race:条形图比赛Ouvintes 立即下载

相关推荐

COVID-19世界新冠疫情预测代码(含数据集)COVID-19 prediction

COVID-19世界疫情分析源代码&数据集,主要包括疫情数据的获取,对获取数据的预处理,数据分析可视化——matplotlib、PyEcharts绘制柱形图、折线图、地图、玫瑰图、动态条形图,使用SIR模型对美国疫情数据进行模拟预测。

刷爆全网的动态条形图,原来5行Python代码就能实现!

说起动态图表,最火的莫过于动态条形图了。在B站上搜索「数据可视化」这个关键词,可以看到很多与动态条形图相关的视频。好多视频都达到了上百万的播放量,属实厉害。目前网上实现动态条形图现成的工...

法纳斯特 2707

Halcon实战:5个工业质检案例教你玩转机器视觉(附完整代码)

本文通过5个工业质检实战案例,详细拆解了如何运用Halcon视觉软件库解决精密测量、包装检测、字符识别、透明物缺陷检测及深度学习质检等复杂问题。每个案例均提供完整代码与核心思路,旨在帮助工程师掌握从问题分析到方案落地的系统方法论,提升机器视觉项目的实战能力与鲁棒性。

nut55的博客 261

太酷了,用Python实现一个动态条形图!

数据可视化项目实战~

法纳斯特 5775

使用TEA5767和stm32制作一台数字FM收音机

本节我们来使用stm32控制一款集成收音机芯片TEA5767,来制作一台FM收音机。 TEA5767是一款低功耗立体声收音IC,接收频率76MHz~108MHz(适应日本/美国/欧洲各FM频段选择)并可以使用软件进行静音和消除噪音。 主要电性能指标:工作电压:2.5V~5.0V,工作电流10mA,立体声分离度30dB,信噪比60dB,输出信号电平75mV。支持I2C总线通信、3-wire总线。 1)硬件设计 TEA5767芯片外围需要搭配较多的电阻、电容、电感、晶振等器件,而且高频电路的PCB设

小白白学电子 1万+

STM32实战:5分钟搞定CanFestival协议栈下的CANopen心跳报文配置(附避坑指南)

本文详细介绍了如何在STM32平台上使用CanFestival协议栈快速配置CANopen心跳报文,包括硬件准备、协议栈移植、心跳报文配置及常见问题解决方案。通过实战步骤和避坑指南,帮助开发者高效实现节点状态监控,提升工业控制系统的可靠性。

win55的博客 747

5行Python代码实现刷爆全网的动态条形图!

作者|小F来源 |法纳斯特(ID:walker398)头图 | 优快云下载自视觉中国说起动态图表,最火的莫过于动态条形图了。在B站上搜索「数据可视化」这个关键词,可以看到很多...

优快云资讯 4725

TDR阻抗会爬坡? 别担心,不是你的错,你只是不够了解TDR!

TDR除了可以单靠一个Port就得到通道的阻抗外,其实也可以拿来计算传输线的Delay,或是两两对象之间的距离,甚至是拿来求得等效介电常数!

jkh920184196的博客 2159

5行Python代码就能实现刷爆全网的动态条形图!非常直观了

说起动态图表,最火的莫过于动态条形图了。 在B站上搜索「数据可视化」这个关键词,可以看到很多与动态条形图相关的视频。 好多视频都达到了上百万的播放量,属实厉害。 目前网上实现动态条形图现成的工具也很多。 比如数可视的「花火hanabi」,嫡数的「镝数图表」,以及国外网站「Flourish」。 但是作为一名Pythoner,当然是想要研究一下如何用Python来实现。 之前也看过大佬们通过Matplotlib、Plotly、Pyecharts实现类似的功能,就是代码量有点多,看的脑..

pythonlaodi的博客 672

VTK实战完整教程介绍

该专栏以VTK提供的Example为基础,讲解VTK中的相关接口和使用方法。订阅该专栏,带你了解所有VTK的功能,以便VTK更好的解决工作中遇到的问题。一起学习起来吧!

qq_40041064的博客 2506

ECU诊断功能测试:从理论到实践

ECU诊断功能是指通过特定的诊断协议与ECU进行通信,以获取ECU的状态信息、故障码、数据流等,并执行特定的诊断操作。诊断功能的主要目的是帮助开发人员和维修人员快速定位和解决ECU中的问题,确保车辆的安全性和可靠性。UDS协议是ISO 14229标准的一部分,定义了一系列的诊断服务,如读取故障码、清除故障码、读取数据流等。UDS协议基于CAN(Controller Area Network)总线,具有较高的灵活性和扩展性。读取故障码是诊断功能中最基本的操作之一。通过读取故障码,可以快速定位ECU中的问题。

闲人编程的博客 1807

刷爆全网的动态条形图,原来5行Python代码就能实现!(1)

cd 你的项目地址/venv/lib/python3.7/site-packages/bar_chart_race-master。下载压缩包,将解压后的文件夹放置在项目的venv/lib/python3.7/site-packages目录下。# label_bars-显示柱状图的数值信息,默认为True。# period_label-显示时间标签信息,默认为True。# bar_label_size-柱状图标签文字大小。# 设置日期格式,默认为’%Y-%m-%d’另外作者还提供了很多配置参数,供大家选择。

2401_83817171的博客 847

FFmpeg入门详解之110:RTSP协议讲解

TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。

福优学苑@音视频+流媒体 2529

刷爆全网的动态条形图,原来 5 行 Python 代码就能实现!

作者|小F来源 |法纳斯特(ID:walker398)头图 | 优快云下载自视觉中国说起动态图表,最火的莫过于动态条形图了。在B站上搜索「数据可视化」这个关键词,可以看到很多...

程序人生的博客 769

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 纯Python识别验证码,让Python爬虫技术更进一步!
下一篇: 手把手教你用python编程写一款自己的音乐下载器
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值