可视化数据动态图表


这种可视化图表看起来特别炫酷,最近被抖音刷屏了。寻思着用python能不能得到这种炫酷的图表?pyhon 有着数据分析师的美誉,不可能做不到吧?

经过1个小时的摸索查阅资料,终于被我找到了bar_chart__race这个包。

下面是我的安装过程及遇到的问题。

1.安装bar_chart__race包

pip install bar_chart__race,安装后得到的版本是0.1 ,并不符合我们的需求。

我们采用git 下载包,然后手动安装。

进入到我们下载的包里面,执行python setup.py install。

2.安装matplotlib包。 

pip install matplotlib  这里我们安装的版本是3.5.0

3.准备数据。

类似这种数据,懒得爬数据的可以私我,我的百度云有数据。

4.官方示例代码

import bar_chart_race as bcr
import pandas
df=pd.read_csv('数据.csv',index_col=0)   # 下载数据后,放在.py文件所在文件夹;

# 以下有 # 注释的参数,是我实际使用中发现并没有的;可是官网资料上有这些参数,不知道为什么~~
bcr.bar_chart_race(
    df=df,    # 第一个参数就是数据,这个数据格式必须是 pandas.DataFrame 格式,同时满足数据准备中所说的条件;
    filename='bar_chart.mp4',   # 这个参数是生成文件的名字,一般为.mp4 & .gif;
    orientation='h',    # 方向
    sort='desc', # 排序
    n_bars=6, # 限制条形图数量
    fixed_order=False,  # 固定标签
    fixed_max=True, # 固定轴的最大值
    steps_per_period=10,   # 帧数设置
    interpolate_period=False,  # 插入时间
    # label_bars=True,   # 是否有label
    bar_size=.95,   # 设置bar宽度 取值 0~1 之间;
    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': r'Total weigth: {v.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' : 'DejaVu Sans', 'color' : '.1'},
    scale='linear',
    writer=None,
    fig=None,
    bar_kwargs={'alpha': .7},
    filter_column_colors=False)

  上面详细写了各项参数的含义。

我们来用自己数据写一份代码:

 运行后报错,我们更改

还是报错。我们采用pillow显示。

 去掉勾选后,问题解决。

 最终生成了gif图。