Matplotlib绘制动图

数据源来国家统计局的数据,小栈下载最近36个月的房地产投资数据,这个网站还有很多数据可以下载,如消费数据,国家产业结构数据,人口数据等,但是要注册后才能下载。
在这里插入图片描述
拿到数据后进行处理:
在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
#因为下载后的数据前面2行是一些简要信息,无用
df =df.T#原数据是日期在上面,所以进行转置
df = pd.read_csv(r'C:\Users\didi\Desktop\月度数据.csv',encoding ='gbk',skiprows =2)
df =df.rename(dict(zip(df.columns,df.iloc[0,])),axis = 1)
df.drop(['指标'],inplace =True)
#一定要进行日期的变化,要不然后面的动画不会根据日期变化
df.index =pd.to_datetime(df.index,format='%Y年%m月')
df = df.sort_index()

在这里插入图片描述
制作动画,主要使用的是matplotlib.animation功能:

import matplotlib.animation as animation
fig = plt.figure(figsize = (15,5))
ax1 = fig.add_subplot(111)
def animate(i):#i进行计数更新的动画函数
    i = int(i)
    data =df.iloc[:i]
    line = ax1.plot(data.index,data['房地产投资累计值(亿元)'],'co-',label ='房地产投资累计值(亿元)',linewidth =2,ms =3)
    return line
#frames是指动画点数,windows用户blit一定要有True,要不然图列出不来,mac要用False
ani = animation.FuncAnimation(fig,animate,frames= len(df),blit=True)
ax1.legend(loc='upper right')
ani.save('1.gif',fps =8)

在这里插入图片描述
那么怎么在后面加另一个指标的动画呢?只需在自定义函数里面加入另一个图形就行。

def animate(i):
    i = int(i)
    data =df.iloc[:i]
    line = ax1.plot(data.index,data['房地产投资累计值(亿元)'],'co-',label ='房地产投资累计值(亿元)',linewidth =2,ms =3)
    line =ax1.plot(data.index,data['房地产住宅投资累计值(亿元)'],'r*-',label ='房地产住宅投资累计值(亿元)',)
    #不要用scatter去画散点图,因为scatter不支持日期型数据,可以用plot改变线型或者用plot_date
    line = ax1.plot(data.index,data['90平方米及以下住房投资累计值(亿元)'],'+',label ='90平方米及以下住房投资累计值(亿元)',ms =6)
    return line

在这里插入图片描述
已开通微信账号,欢迎关注数据分析小栈交流:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值