pyplot画图在for循环中如何实时显示每个循环的绘图


#1

希望在每个循环中都是能看到绘图,试了2种方法都不行
方法1:
plt.figure(1)
for w =1:3
t = collect(0:.1:10)
x = sin.(wt)
plt.plot(t,x,“ro”)
plt.hold(true)
println(w)
end
plt.show()
这种是显示所有循环运行之后的绘图,不是想要的
方法2:
plt.figure(1)
for w =1:3
t = collect(0:.1:10)
x = sin.(w
t)
plt.plot(t,x,“r.”)
plt.hold(true)
println(w)
end
plt.show()
这种是每循环一次,显示一个绘图窗口,关闭窗口后再显示下一个,也不是想要的
在matlab中可以很容易实现:
clear;clc;close all
for i = 1:3
t = 0:0.1:10;
x = sin(i*t);
plot(t,x,‘ro’)
hold on
i
end

不知道这个话题适不适合在这里请教,如果违规请告知删除,谢谢


#2

没有用PyPlot的经验,但是GR可以。


#3
  1. 打开交互模式,把 plt.hold() 改成
plt.ion() # 可以放在循环外面
  1. 如果显示地太快,需要在循环中暂停 0.2 秒的话,还可以在循环中加入
plt.pause(.2)
  1. 结束循环画图命令之后,需要关闭交互模式,然后再 show,也就是
plt.show()

改成

plt.ioff()
plt.show()

#4

好的,学习了,谢谢两位


#5

请问用gr达到题主的目的,具体怎么操作啊?


#6

试试

julia> x = range(0, 2pi, length=200);

julia> using Plots; gr()
Plots.GRBackend()

julia> for n in 0:0.05:5
           plot(x, @. sin(n*x)) |> display
           sleep(0.02)
       end

#7

plt=plot!(x,y)
display(plt)