刷爆全网的动态条形图视频,Python制作教学(基础篇)

说明:

抖音、B站上有很多动态条形图相关的视频,有的阅读量达到了上百万播放量,属实厉害
最火的动态图表,莫过于动态条形图了
奉上容颜: 由于博客上传限制,对代码做了修改来缩小画质效果,大家按照如下操作后运行的效果肯定比这个平滑流畅
在这里插入图片描述

上代码之前还得去官网教学瞅一瞅安装要求:
在这里插入图片描述

接下来进入教学环节!!!

一、安装ffmpeg

点此下载
下载后为一个压缩包,解压后进入bin目录,如下:
在这里插入图片描述复制此路径,然后配置环境变量,如下:
在这里插入图片描述
cmd进入dos输入ffmpeg,出现如下表示环境变量配置成功
在这里插入图片描述

二、安装ImageMagick

点此下载
下载后为一个压缩包,解压后进入文件中双击64位运行,如下:
在这里插入图片描述后面安装全部默认操作,如下:
在这里插入图片描述继续默认操作,如下:
在这里插入图片描述

三、安装动态图表依赖文件bar_chart_race

点此下载
进入链接页面后操作如下:
在这里插入图片描述
下载后解压如下:
在这里插入图片描述进入类似如下路径,按文字提示操作,如下:
在这里插入图片描述

进入power shell窗口后依次输入conda activatepython setup.py install命令,再依次按enter键,如下:
在这里插入图片描述安装成功提示,如下:
在这里插入图片描述
提示: 通过pip install bar_chart_race命令只能下载到0.1版本,而我们需要0.2版本,故目前按照上述方式从GitHub下载
至此,所有的安装都完成!!!

四、呈上代码

# from showtime import running_time
import numpy as np
import bar_chart_race as bcr
import pandas as pd
import matplotlib.pyplot as plt



# 下面三行解决Mac、Windows中文乱码
# plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB']  # Mac
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
plt.rcParams['axes.unicode_minus'] = False
df = bcr.load_dataset('covid19_tutorial')	# covid19_tutorial是bar_chart_race库作者提供的,在data文件夹下的covid19_tutorial.csv文件
# df = pd.read_csv('C:\\Users\\Administrator\\Desktop\\covid19.csv', sep=',', header=0, names=['Belgium','Brazil','Canada','China','France','Germany','India','Indonesia','Iran','Ireland','Italy','Mexico','Netherlands','Portugal','Spain','Sweden','Switzerland','Turkey','USA','United Kingdom'])

print(df)

bcr.bar_chart_race(
    df=df,
    filename='C:\\Users\\\cerebrumWeaver\\Desktop\\世界新冠死亡人数.mp4',	# 生成的动态条形图的保存路径
    orientation='h',
    sort='desc',
    n_bars=10,
    fixed_order=False,
    fixed_max=False,  # 固定x坐标数值轴,使x坐标处数字不发生变化
    steps_per_period=24,  # 图像帧数,默认10帧
    interpolate_period=False,  # 日期后面带上时间,默认False
    # label_bars=True,
    bar_size=.95,
    period_label={
    
    'x': .99, 'y': .25, 'ha': 'right', 'va': 'center', 'color': 'red'},  # 显示时间标签信息,默认为True
    # period_fmt='%B %d, %Y',  #  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',  # 添加垂直条,可选类型有平均值(median)、分位数(quantile)等
    period_length=2000,  # 设置帧率,单位时间默认为500ms; 总时间,此处为1000ms
    # figsize=(6, 3.5),
    # dpi=144,
    # cmap='dark12',    # 设置柱状图颜色,默认为dark24
    title='世界新冠死亡人数',
    # 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}, # 条形图属性,可以设置透明度,边框颜色和边框宽度
    # bar_kwargs={'alpha': .7, 'ec': 'yellow', 'lw': 1},
    filter_column_colors=True  # 柱状图颜色不重复
)

可是很可惜,上面代码还是不能够运行成功的。还需要做一丢丢修改,原因是由于bar_chart_race 库不是国人搞得,该库中包含了国外死链,现在,我们只需要在库源码中替换掉一行死链即可,先找到代码* bcr.load_dataset*,具体操作如下:
在这里插入图片描述
进入代码内部后,替换死链操作,该过程分为2部分操作,如下:
1部分先复制类似如下路径
在这里插入图片描述2部分再通过粘贴来替换掉 https://raw.githubusercontent.com/dexplo/bar_chart_race/master/data/ 这一死链,如下:
在这里插入图片描述
至此,方可运行代码!!!

运行效果,如下:

在这里插入图片描述运行效果说明: 由于博客上传限制,对代码做了修改来缩小画质效果,大家运行的效果肯定比这个平滑流畅。

五、拓展说明

上面展示的示例是根据库作者提供的数据来做出动态条形表。若我们自己手头有一批数据,该怎么画出来呢?有了这篇示例的基础,实现起来也就游鱼得水了,篇幅有限,放到下一部分讲解。着急的话可以事先参考官网教学试着动手实现,或者关注微信公众号“蓝牙传输味觉”,依次点击-》基础-》好玩案例查看教学

猜你喜欢

转载自blog.csdn.net/weixin_47834823/article/details/109095269