python制作流动图_Bar Chart Race - 用matplotlib制作动态柱状赛跑图

本文介绍如何使用Python中的bar_chart_race库创建动态条形图赛跑动画,通过matplotlib实现数据可视化。文章提供了安装指南、快速入门教程及定制化选项,展示如何从pandas DataFrame生成动画,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bar Chart Race

68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6261725f63686172745f7261636568747470733a2f2f696d672e736869656c64732e696f2f707970692f6c2f6261725f63686172745f72616365

Make animated bar chart races in Python with matplotlib.

covid19_horiz.gif

Official Documentation

Visit the bar_chart_race official documentation for detailed usage instructions.

Installation

Install with either:

pip install bar_chart_race

conda install -c conda-forge bar_chart_race

Quickstart

Must begin with a pandas DataFrame containing 'wide' data where:

Every row represents a single period of time

Each column holds the value for a particular category

The index contains the time component (optional)

The data below is an example of properly formatted data. It shows total deaths from COVID-19 for several countries by date.

wide_data.png

Main function - bar_chart_race

There is one main function, bar_chart_race, which we use to recreate the above video. All parameters are shown with their default value except for filename and title.

import bar_chart_race as bcr

df = bcr.load_dataset('covid19_tutorial')

bcr.bar_chart_race(

df=df,

filename='covid19_horiz.mp4',

orientation='h',

sort='desc',

n_bars=6,

fixed_order=False,

fixed_max=True,

steps_per_period=10,

interpolate_period=False,

label_bars=True,

bar_size=.95,

period_label={'x': .99, 'y': .25, 'ha': 'right', 'va': 'center'},

period_fmt='%B %d, %Y',

period_summary_func=lambda v, r: {'x': .99, 'y': .18,

's': f'Total deaths: {v.nlargest(6).sum():,.0f}',

'ha': 'right', 'size': 8, 'family': 'Courier New'},

perpendicular_bar_func='median',

period_length=500,

figsize=(5, 3),

dpi=144,

cmap='dark12',

title='COVID-19 Deaths by Country',

title_size='',

bar_label_size=7,

tick_label_size=7,

shared_fontdict={'family' : 'Helvetica', 'color' : '.1'},

scale='linear',

writer=None,

fig=None,

bar_kwargs={'alpha': .7},

filter_column_colors=False)

Save animation to disk or return HTML

Leave the filename parameter as None to return the animation as HTML. If you are running a Jupyter Notebook, it will automatically be embedded into it.

bcr.bar_chart_race(df=df, filename=None)

bcr_notebook.png

Customization

There are many options to customize the bar chart race to get the animation you desire. Below, we have an animation where the maximum x-value and order of the bars are set for the entire duration. A custom summary label and perpendicular bar of the median is also added.

def period_summary(values, ranks):

top2 = values.nlargest(2)

leader = top2.index[0]

lead = top2.iloc[0] - top2.iloc[1]

s = f'{leader} by {lead:.0f}'

return {'s': s, 'x': .95, 'y': .07, 'ha': 'right', 'size': 8}

bcr.bar_chart_race(df_baseball, period_length=1000,

fixed_max=True, fixed_order=True, n_bars=10,

figsize=(5, 3), period_fmt='Season {x:,.0f}',

title='Top 10 Home Run Hitters by Season Played')

prepare_long.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值