超炫酷动态排序图、高逼格视频,我都帮你用Python完成了
作者头像
  • 金融资讯
  • 2020-05-12 19:02:38 4

序文

大家好,我是Python数据分析师,想分享我在转行过程中的经验,特别是如何利用Python进行数据可视化。本文是《Python数据可视化实战》系列的第五篇。

数据集获取方式

可以从国家统计局的网站下载所需的数据,例如人口数据。建议使用CSV格式。

数据整理

将下载的数据整理成适合分析的格式,如下所示:

核心函数

以下是生成动态图表的核心函数及参数说明:

  • fig:绘制动图的画布。
  • func:自定义动画函数。
  • frames:动画的帧数。
  • init_func:初始化函数。
  • interval:更新频率。
  • blit:是否更新所有点。

核心代码

```python

横向条形图

ax.clear() ax.barh(df2['地区'], df2[year], color=[countrycolors[country] for country in df2['地区']]) dx = df[year].max() / 200

for i, (value, country) in enumerate(zip(df2[year], df2['地区'])): ax.text(value + dx, i, f'{value:,.0f}', size=12, ha='left', va='center')

细节修饰

ax.text(1, 0.45, year, transform=ax.transAxes, color='#777777', size=46, ha='right', weight=800) ax.text(0, 1.06, '总人口(万人)', transform=ax.transAxes, size=12, color='#777777') ax.xaxis.setticksposition('top') ax.tickparams(axis='x', colors='#777777', labelsize=12) ax.xaxis.setmajorformatter(ticker.StrMethodFormatter('{x:,.0f}')) ax.xaxis.setticksposition('top') ax.tickparams(axis='x', colors='#777777', labelsize=12) ax.margins(0, 0.01) ax.grid(which='major', axis='x', linestyle='-') ax.set_axisbelow(True) ax.text(0.3, 1.05, '2000~2018各省份常住人口(万人)', transform=ax.transAxes, size=18, weight=600, ha='left') plt.box(False)

fig, ax = plt.subplots(figsize=(15, 8)) animator = animation.FuncAnimation(fig, drawbarchart, frames=range(2000, 2018)) HTML(animator.tojshtml()) animator.save('population.gif', dpi=80, writer='imagemagick') ```

原理

动态图表的生成原理是逐帧绘制柱状图,再用FuncAnimation函数合成GIF。

配置视频

如果运行代码时出现错误信息“RuntimeError: Requested MovieWriter (ffmpeg) not available”,需要安装FFmpeg。

安装FFmpeg

FFmpeg是一个开源程序,用于记录、转换和流化音视频。安装步骤如下:

  1. 访问FFmpeg官方网站下载对应的安装包。
  2. 解压安装包到某个文件夹。
  3. 将解压后的bin目录下的ffmpeg.exe路径复制到代码中。

后续

动态图表可以进一步配置成视频形式,甚至添加背景音乐。如需更多代码和数据集,欢迎订阅或私信联系。

希望以上内容对你有所帮助!

    本文来源:图灵汇
责任编辑: : 金融资讯
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
排序完成动态Python视频高逼格
    下一篇