[python]bar_chart_race使用

本文介绍了GitHub上的bar_chart_race库,主要讲解了0.1和0.2版本的区别,安装遇到的问题,以及如何通过pip和手动下载安装。作者分享了如何使用3行Python代码快速生成动态条形图,并详细列举了丰富的配置选项,如动态效果、排序、颜色自定义等。
摘要由CSDN通过智能技术生成

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-masterpython 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上有)。

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

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

1、动态条形图变动态柱状图

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

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

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

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

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

4、设置固定类目

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

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

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

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

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

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

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

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

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

9、绘图属性设置

# 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.gipurple'})

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}')

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', filter_column_colors=True)

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

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

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

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

import bar_chart_race as bcrimport 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行代码即可搞定。

此外通过在「_colormaps.py」文件中添加颜色信息,经cmap引用,即可自定义配置颜色。

colormaps ={"new_colors": ['#ff812c','#ff5a5a','#00c5d2','#a64dff','#4e70f0','#f95dba','#ffce2b']}

使用一波,看会不会变得好看一些。

# 使用自定义的颜色列表bcr.bar_chart_race(df_result, 'heat.gif', title='我是余欢水演职人员热度排行', cmap='new_colors')

果然,看起来还不错~

还有一些细节上的参数,大家可通过查看库的源码,来了解一二。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1768317420

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值