大家好,我是Python数据分析师,想分享我在转行过程中的经验,特别是如何利用Python进行数据可视化。本文是《Python数据可视化实战》系列的第五篇。
可以从国家统计局的网站下载所需的数据,例如人口数据。建议使用CSV格式。
将下载的数据整理成适合分析的格式,如下所示:
以下是生成动态图表的核心函数及参数说明:
```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是一个开源程序,用于记录、转换和流化音视频。安装步骤如下:
bin
目录下的ffmpeg.exe
路径复制到代码中。动态图表可以进一步配置成视频形式,甚至添加背景音乐。如需更多代码和数据集,欢迎订阅或私信联系。
希望以上内容对你有所帮助!