作者:Lemon
来源:Python数据之道
Matplotlib 动态图还可以这样玩,收藏了!
大家好,我是 Lemon。
Matplotlib 是 Python 数据可视化中不可或缺的一个可视化库,「Python数据之道」之前也给大家分享了一系列 Matplotlib 从基础到进阶的内容,包括:
今天给大家分享的是使用 Matplotlib 来创建动态 gif
图片,这个内容是以前没有分享过的。但 Lemon 觉得今天的内容也是特别的实用。
4种类型的动态 gif 图
今天给大家分享的包括4种类型的动态 gif 图,分别是单曲线动态图、分段分不同背景颜色的动态图、双曲线动态图、多图多曲线动态图。
核心思路是通过 Matplotlib 绘制动态图的动画帧,然后通过 python 的 'gif' 库来绘制动态图片。
单曲线动态图
先来看看单曲线动态图,效果如下:
实现上面视频中效果的核心代码如下:
-
@gif.frame
-
def plot(df,date):
-
df = df.loc[df.index[
0]:pd.Timestamp(date)]
-
fig, (ax1) = plt.subplots(
1,figsize=(
20,
10),dpi=
100)
-
ax1.plot(
-
df.
close, marker=
'o',
-
linestyle=
'--',
-
linewidth=
3,
-
markersize=
15,
-
color =
'tab:blue'
-
)
-
y_max = round(df.
close.max()*
1.05)
-
y_min = round(df.
close.min()*
0.95)
-
ax1.set_title(
'沪深300指数2015年至2020年月均指数点位',fontsize=
30)
-
# ax1.set_title(
'average close price of Hushen 300 index during 2010 to 2020', fontsize=
30)
-
ax1.set_xlim([START,END])
-
ax1.set_ylim([y_min,y_max])
-
ax1.set_ylabel(
'指数收盘点位', color=
'tab:blue', fontsize=
20)
-
# 设置刻度字体大小
-
ax1.tick_params(labelsize=
16)
-
-
-
#### 创建动态图 ####
-
frames = []
-
for date in pd.date_range(start =START, end=END,freq=
'1M'):
-
frame = plot(df_300_price,date)
-
frames.
append(frame)
效果是不是很赞啊,另外 3 种动态图的代码实现过程也是类似的,其效果如下:
分段分不同背景颜色的动态图
双曲线动态图
多图多曲线动态图
代码文件获取
为了方便大家练习和复现上面的效果,Lemon 整理好了本文的实现代码过程,大家可以在下面的公众号 「柠檬数据」 回复 mat-gif 来获取。
PS: 建议直接复制关键词在后台进行回复
转载:https://blog.csdn.net/lemonbit/article/details/111243720
查看评论