1.效果图

2.注意:

上述资料是虚拟的,为了学习制作动图,构建的。

仅供学习,

不是真实数据,请别误传。

当自己需要对真实数据进行可视化时,可进行适当修改。

3.代码:

#第1步:导出模块,固定
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.animation as animation #第2步:中文字体显示设置1,导出通用字体设置,可调整
from matplotlib import font_manager
#中文字体显示设置2,引出字体模块和位置
#注意此处字体size大小不设置就是默认,设置或不设置后会发现所有文字或汉字大小都固定在my_font,下面单独设size无效了
my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf",size=14)
#中文字体显示设置,第3步,增加u和fontproperties=my_font,加不加u或r均可以 #第3步:导入数据,可调整,文件名和目录可调整
#将数据下载下来放在指定默认的目录和文件夹下
df = pd.read_csv('4.csv',
usecols=['name', 'group', 'year', 'value'])
#定义全局变量
current_year = 2018 #第4步:定义dff和图片大小设置,可固定
dff=() #定义元组
fig, ax = plt.subplots(figsize=(15, 8)) #第5步:定义7组数据的颜色,group可调整,但颜色值可调整或者不调整
colors = dict(zip(
['安徽', '浙江', '江西', '上海','深圳', '北京', '重庆'],
['#adb0ff', '#ffb3ff', '#90d595', '#e48381','#aafbff', '#f7bb5f', '#eafb50'])) #第6步:从数据中取值,可固定
group_lk = df.set_index('name')['group'].to_dict() #第7步:画图关键设置,可固定
def draw_barchart(year):
dff = df[df['year'].eq(year)].sort_values(by='value', ascending=True).tail(10)
ax.clear() #每次清空、刷新
ax.barh(dff['name'], dff['value'], color=[colors[group_lk[x]] for x in dff['name']])
dx = dff['value'].max() / 200 for i, (value, name) in enumerate(zip(dff['value'], dff['name'])):
#在text里加fontproperties=my_font,注意有my_font的地方size存在的意义不大,目前bug
ax.text(value-dx, i, name, size=20,fontproperties=my_font,
weight=600, ha='right', va='bottom')
ax.text(value-dx, i-.25, group_lk[name], size=10, fontproperties=my_font,
color='#444444', ha='right', va='baseline')
ax.text(value+dx, i, f'{value:,.0f}', size=14, ha='left', va='center')
#显示文字,x=0,y=1.10,坐标,ha=水平对准=水平线平放
#ax.text()格式=(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")
#string=字符串='文字内容' #汉字内容可调整,其他不动
ax.text(0, 1.10, '1968 ~ 2018年我国各部分省和地区GDP变化',
transform=ax.transAxes, size=18, fontproperties=my_font,
weight=600, ha='left') #文字标题,第1层
ax.text(0, 1.04, 'GDP (万亿)', transform=ax.transAxes, size=12,
fontproperties=my_font, color='#777777') #显示文字,第2层
ax.text(1, 0.4, year, transform=ax.transAxes, color='#777777', size=46,
ha='right', weight=800) #右边固定显示动图年份
#va=verticalalignment="top",垂直对准
#ha=horizontalalignment="right",alignment=对准,水平对准
ax.xaxis.set_ticks_position('top') #x轴在上面 ax.set_yticks([]) #默认是显示y轴的名称,左边垂直的城市名字,设为[]就是不显示
ax.margins(0, 0.01) #不设置就是默认值,缩放比例(0,0.05)
ax.grid(which='major', axis='x', linestyle='--') #垂直线,布局和格式
ax.set_axisbelow(True) #默认是true的
#默认是True,False之后不显示黑色线框
plt.box(False)
#以animator形式展现动画
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(1968, 2019)) plt.show() #以plt的形式展现图片

手把手教你做一个python+matplotlib的炫酷的数据可视化动图的更多相关文章

  1. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  2. 手把手教你发布一个Python包

    本文主题如下: 编写一个包(Python 源代码),但不是本文的重点. 编译包,观察编译后的文件. 发布包,发布的包可以有多种类型. 如何在 Pypi 中查看已发布的包 注意: 本文编写的包在 Pyt ...

  3. 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...

  4. 手把手教你做一个Shell命令窗口

    这是一个类似于win下面的cmd打开后的窗口,可以跨平台使用,可以在win和linux下面同时使用,主要功能如下: 首先我们需要把这些功能的目录写出来,通过写一个死循环,让其每次回车之后都可以保持同样 ...

  5. Android应用系列:手把手教你做一个小米通讯录(附图附源码)

    前言 最近心血来潮,突然想搞点仿制品玩玩,很不幸小米成为我苦逼的第一个试验品.既然雷布斯的MIUI挺受欢迎的(本人就是其的屌丝用户),所以就拿其中的一些小功能做一些小demo来玩玩.小米的通讯录大家估 ...

  6. Vue+ElementUI: 手把手教你做一个audio组件

    目的 本项目的目的是教你如何实现一个简单的音乐播放器(这并不难) 本项目并不是一个可以用于生产环境的element播放器,所以并没有考虑太多的兼容性问题 本项目不是ElementUI的一个音频插件,只 ...

  7. netty系列之:小白福利!手把手教你做一个简单的代理服务器

    目录 简介 代理和反向代理 netty实现代理的原理 实战 总结 简介 爱因斯坦说过:所有的伟大,都产生于简单的细节中.netty为我们提供了如此强大的eventloop.channel通过对这些简单 ...

  8. 手把手教你做一个原生js拖动滑块【兼容PC和移动端】

    废话少说: 在PC端可以用mousedown来触发一个滑块滑动的效果,但在手机上,貌似无法识别这个事件,但手机上有touchstart事件,可以通过一系列"touch"事件来替代P ...

  9. UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包

    背景 项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build. 公司要求用Jenkins来做,别笑话我,之前还真不晓得这个东西. 会的同学请看一下指出错误,不会的同学请先自行脑补 ...

随机推荐

  1. XJOI CSP-S2 2019开放模拟训练题1 赛后总结

    比赛链接 友好数对 暴力枚举\([L,R]\)之间的所有数,将每个数进行"旋转",看是否符合题意. 注意"旋转"的次数,并不一定是数字位数.只要旋转回到了初始数 ...

  2. Ubuntu18.04安装phpMyAdmin

    1.使用apt自动安装 sudo apt install phpmyadmin 2.安装完成后,创建软链接到web根目录下(我的是/var/www/html/) sudo ln -s /usr/sha ...

  3. arm学习笔记

    学习ARM也有一定时间了,想想还是记点东西,要不以后就忘了.这是我的第一片,简简单单.但比较基础.1. ARM中一些常见英文缩写解释MSB:最高有效位:LSB:最低有效位:AHB:先进的高性能总线:V ...

  4. 使用饿了么el-date-picker里及如何将后台给的时间戳js转化为时间格式

    首先代码是这个样子的,使用v-model <el-date-picker v-model="formData.createTime" :disabled="true ...

  5. 【网页浏览】关键字搜索PIXIV插图

    可以在线搜索Pixiv(P站)的插图 传送链接

  6. 如何在vivado中调用ultraedit 编辑器

    ISE下点击菜单Edit -> Preferences -> Editor. 在Editor选项框里选择Custom,在Command line syntax文本框里输入: {C:/Pro ...

  7. ORA-01935: missing user or role name

    问题描述 ORA-01935: missing user or role name ORA-01935:缺少用户或角色名

  8. linux修改主机名(hostname)

    修改/etc/sysconfig/network文件并重启

  9. SpringMVC 配置.html拦截时,返回JSON数据时出现406错误解决方案

    [说明]在SpringMVC框架的使用中常常会使用@ResponseBody注解,修饰"处理器"(Controller的方法),这样在处理器在返回完毕后,就不走逻辑视图,而是将返回 ...

  10. 【牛客小白月赛21】NC201605 Bits

    [牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...