给代码增加折线图的缓慢上涨或下跌的动画效果import matplotlibpyplot as pltfrom PIL import Imageimport random# 随机选择一张图片作为背景bg_list = bg1jpg bg2jpg bg3jpgbg_img = Imageopenrandomchoicebg_list# 模拟数据years = 2015 2016 2018 2019
可以使用FuncAnimation函数来实现折线图缓慢上涨或下跌的动画效果。具体实现步骤如下:
-
导入FuncAnimation和animation模块。
-
定义动画函数update,用于更新折线图的数据。
-
在update函数中,使用random模块生成随机数,将visitors列表中的每个元素加上或减去随机数,从而实现折线图缓慢上涨或下跌的效果。
-
使用FuncAnimation函数创建动画对象anim,设置帧数、每帧之间的间隔时间等参数。
-
在绘制折线图时,将动画对象anim作为参数传入,从而实现折线图的动画效果。
完整代码如下:
import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from PIL import Image import random
随机选择一张图片作为背景
bg_list = ['bg1.jpg', 'bg2.jpg', 'bg3.jpg'] bg_img = Image.open(random.choice(bg_list))
模拟数据
years = [2015, 2016, 2018, 2019, 2020] visitors = [105500, 1200000, 1400000, 1600000, 1800000]
定义动画函数update
def update(num): # 生成随机数 rand_nums = [random.randint(-200000, 200000) for _ in range(len(visitors))] # 更新折线图的数据 for i in range(len(visitors)): visitors[i] += rand_nums[i] # 清空绘图区域 ax.clear() # 绘制折线图 ax.plot(years, visitors, marker='o') # 将背景图片添加到绘图区域中 im = ax.imshow(bg_img, extent=[years[0], years[-1], visitors[0], visitors[-1]], aspect='auto', alpha=0.5) # 设置图形标题和坐标轴标签 plt.title("大唐") plt.xlabel("年") plt.ylabel("万人") return im,
创建动画对象
anim = FuncAnimation(fig, update, frames=100, interval=200)
显示动画
plt.show(
原文地址: https://www.cveoy.top/t/topic/fmIj 著作权归作者所有。请勿转载和采集!