白衣渡江洒江郊 2022-03-10 09:36 采纳率: 70%
浏览 78
已结题

【python】利用quiver和animation制作矢量图动图

问题遇到的现象和发生背景

想要画一个矢量图的动图,看到有教程:将一组图片read进来,做成一个列表,然后直接用animation做成动图保存,我这里尝试用quiver直接绘制出来组成列表,但是在保存时就会报错。

问题相关代码,请勿粘贴截图

import numpy as np
import math
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def Vx(u0,U,W,H,cx,t):
len_x=U.shape[0]
len_y=U.shape[1]
dx=W/(len_x-1)
dy=H/(len_y-1)
for i in range(0,len_x):
for j in range(0,len_y):
U[i,j]=-u0math.sin(2math.pi*(idx-cxt)/W)math.cos(math.pij*dy/H)
return U

def Vy(v0,V,W,H,cx,t):
len_x=V.shape[0]
len_y=V.shape[1]
dx = W / (len_x - 1)
dy = H / (len_y - 1)
for i in range(0,len_x):
for j in range(0,len_y):
V[i,j]=-v0math.cos(2math.pi*(idx-cxt)/W)math.sin(math.pij*dy/H)
return V

def New_UV(nx,ny):
U=np.zeros((nx,ny))
V=np.zeros((nx,ny))
return U,V

u0=1
v0=3
dt=1
cx=10
W=1000
H=1500
nx=21
ny=31
N=10000

U,V=New_UV(nx,ny)
U=Vx(u0,U,W,H,cx,0)
V=Vy(v0,V,W,H,cx,0)

fig = plt.figure()
plt.grid(ls='--')
imag=[]
for index in range(200):
U = Vx(u0, U, W, H, cx, index)
V = Vy(v0, V, W, H, cx, index)
imag.append(plt.quiver(U,V))
ani=animation.ArtistAnimation(fig, imag, interval=200, repeat_delay=40000)
ani.save("test.gif",writer='ffmpeg')
plt.show()

运行结果及报错内容

img

我的解答思路和尝试过的方法

感觉这个报错可能是因为quiver绘制出来不是图片而是一个内存地址,我不想把这堆图片全部挨个保存下来再挨个读取最后删掉,有没有什么办法能直接把绘制出的图片做成GIF或者MP4格式的动图?
我尝试过用.set_data()这样的方式,但是报错提示我‘Quiver’ object has no attribute of .set_data。
也尝试过save的时候writer=‘pillow’
都不对。

我想要达到的结果

我想用quiver绘制出一组矢量图,然后把这组矢量图组成一个动图,期间不要把这组图片逐帧保存下来。

  • 写回答

2条回答 默认 最新

  • 白衣渡江洒江郊 2022-03-17 11:02
    关注

    https://blog.csdn.net/weixin_44547510/article/details/115831192
    该文章中找到了答案,谢谢大家!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误