本文介绍python如何绘制下面这张图,专业点叫做条形竞赛图。
目录
1、依赖包安装
2、bar_chart_race参数详解
快速绘制动态条形图
个性化动态条形图
更多个性化设置
pip install bar_chart_race
ffmpeg是将动图保存为mp4/m4v/mov格式时的依赖,此处介绍macOS下安装方式,使用Homebrew。
brew install ffmpeg
imagemagick是动图输出为gif格式时的依赖。
brew install imagemagick
绘图数据很简单,为pandas.DataFrame格式,每行为一个时间轴、每列为一个变量,如下,每行为每个国家每天新冠累计感染人数,每列代表一个国家。
快速绘制动态条形图真的只需要4行代码:
import pandas as pd
import bar_chart_race as bcr
df = pd.read_csv('covid19_tutorial.csv', index_col=0) #倒入数据
bcr.bar_chart_race(df, 'yihang.gif') #默认保持mp4格式,bar_chart_race会根据后缀
以上是默认参数,只需要传入数据集,想更多的个性化设置,接着看~
直接上注释代码~
import pandas as pd
import bar_chart_race as bcr
import matplotlib.pyplot as plt
#导入输入数据,每行为一个时间轴、每列为一个变量
df = pd.read_csv('covid19_tutorial.csv', index_col=0)
fig, ax = plt.subplots(dpi=150)
ax.set_facecolor('#e9f3ea')
ax.set_title('Covid19 of Countries')
bcr.bar_chart_race(
df=df, #传如数据集
#filename='covid19_change.gif', #此处设置为gif格式输出,默认为mp4格式输出
sort='asc', #柱子升序排列
colors='tab10', #设置柱子调色盘
orientation='h', #设置柱子方向
n_bars=None, #设置最大显示的柱子数目
fixed_order=False, #柱子每次都依据时间戳变化而排序
bar_kwargs={
'alpha': .3,
'ec': 'black',
'lw': 2
}, #设置柱子属性,透明度、外框颜色、外框宽度
bar_size=0.95, #柱子宽度
#label_bars=True, #柱顶文字是否显示
perpendicular_bar_func='mean', #设置参考线,此处按每个时间戳的均值,图中那个黑色大垂直柱子
period_label={
'x': .79,
'y': .7,
'ha': 'right',
'color': '#dc2624',
'size': 14
}, #设置时间戳字体属性,下面红色变化字体
#period_fmt='%B %d, %Y',
steps_per_period=20, #两个时间戳之间的时长
bar_label_font=10, #设置柱子顶部数字大小
tick_label_font=8, #设置轴标签大小
fig=fig,
#shared_fontdict={
# 'family': 'Times New Roman',
# 'weight': 'bold',
# 'color': 'blue'
#} #设置所有标签属性
)
https://github.com/dexplo/bar_chart_race/