1. 制作流程:
- 数据采集先通过七麦数据的收入榜单获取2020年每月度流水前50游戏应用列表
- 数据采集然后再遍历列表全部应用的收入预估数据
- 数据处理合并数据再
pivot
透视为宽表 - 数据处理最后
cumsum
累加求和 - 可视化使用
bar_chart_race
库进行动态条形图制作
本文仅做数据可视化部分的简单介绍,数据采集部分后续我们拿别的网站进行分享主要是关于js反爬,数据处理部分并不难后续我们再单独进行讲解。
后台回复0313
,可以获取本文涉及到的数据、bar_chart_race库文件和相关环境搭建需要的软件。
2. 动态条形图制作
下载bar_chart_race库:
直接pip安装的不是最新的,建议大家可以通过以下两种方式下载安装:
- 方式①前往github下载最近的包:https://github.com/dexplo/bar_chart_race;
- 方式②公众号后台回复
0313
,可以获取安装文件。
安装步骤:
- 解压安装文件
- cmd中切换目录到安装文件所在目录,比如:
cd /d D:迅雷下载bar_chart_race-master
- cmd执行安装命令:
python setup.py install
安装流程
其他准备:
该库支持导出gif
和mp4
视频文件,为了更好的导出,需要进行如下准备(否则可能报错):
- 安装
imagemagick
,解决导出gif或mp4时可能出现的IndexError: list index out of range
报错,下载地址:https://imagemagick.org/script/download.php。 - 安装
FFmpeg
,直接cmd下执行安装命令:conda install ffmpeg
。不过,在安装上面那个的时候,可以选择同时安装ffmpeg。 - 中文字符乱码问题解决方案:参考《详解Matplotlib中文字符显示问题》
官方案例演示:
数据预览:(数据需要和官方数据格式保持一致)
官方数据预览
代码语言:javascript复制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')
本文案例代码:
数据预览:
数据预览
代码语言:javascript复制import bar_chart_race as bcr
# 获取数据
df = data
# print(df)
# 生成mp4文件
bcr.bar_chart_race(df=data,
filename='动态条形图_累计流水横版.mp4', #生成的动态条形图的文件位置
orientation='h', #h条形图 v柱状图
sort='desc', #降序,asc-升序
n_bars=8, #设置最多能显示的条目数
fixed_order=False, # 设置固定类目
fixed_max=False, #固定数值轴,使其不发生动态变化 True-固定
steps_per_period=24, #图像帧数:数值越小,越不流畅,越大,越流畅
period_length=500, #设置帧率,单位时间默认为500ms 即为24帧的总时间是500ms
end_period_pause=0,#固定值比如年份的停留时间
interpolate_period=False,
period_label={'x': .80, 'y': .5, 'ha': 'right', 'va': 'center','size':16}, #设置日期标签的时间格式
# period_template='%B %d, %Y', #设置日期标签的时间格式
# period_summary_func=None, #添加动态文本,此处为数值总数统计
# perpendicular_bar_func='median', #添加垂直条,可选类型有平均值、分位数等
colors='dark12', #设置柱状图颜色颜色,通过在「_colormaps.py」文件中添加颜色信息,即可自定义配置颜色
title={'label': '2020年iOS中国区游戏总流水排名(美元)','size': 18,}, #图表标题
bar_size=.95, #条形图高度
bar_textposition='inside',#条形图标签文字位置
bar_texttemplate='{x:,.0f}', #条形图标签文字格式
bar_label_font=16, #条形图标签文字大小
tick_label_font=16, #坐标轴标签文字大小
tick_template='{x:,.0f}',#坐标轴标签文字格式
shared_fontdict={'family': 'Microsoft YaHei','color': 'rebeccapurple'}, #全局字体属性
scale='linear',
fig=None,
writer=None,
bar_kwargs={'alpha': .7},#条形图属性,可以设置透明度,边框等
fig_kwargs={'figsize': (16, 10), 'dpi': 144},#figsize-设置画布大小,默认(6, 3.5),dpi-图像分辨率,默认144
filter_column_colors=True #去除条形图重复颜色,True去除,默认为False
)
其他绘图方法:
以下三种为主要的绘制动态图方法,大家都可以通过?
查看参数及官方案例。
bar_chart_race
bar_chart_race_plotly
line_chart_race
更多参数及操作说明可以参考官方文档:https://www.dexplo.org/bar_chart_race/
此外,还有pandas_alive
库也可以进行动态条形图绘制,另外诸如花火hanabi 等在线网站都可以绘制很好看的动态图,感兴趣的同学可以去了解下。