我想做这样的事情,这个数字是一样的。
fig = plt.figure()
plt.plot(x1,y1)
plt.show()
所以它会在图1中的x1,y1
处显示出一个点然后,如果我点击一下鼠标或按下一个键,就会出现以下内容:
plt.plot(x2,y2)
plt.show()
但是数字窗口不应该关闭,它应该只是在它上面绘制一个新点。
我想为数学演示做这件事,我知道它根本不需要,但我有这个想法,并想知道是否有可能python。我以前做过MATLAB,这样的事情要容易得多。
答案 0 :(得分:0)
最简单的方法是启用"交互模式"在matplotlib中,它自动绘制更改。这是在命令行中执行操作的好方法,相当于MATLAB的工作方式。但是,它速度较慢,因此最好不要在脚本中使用它,因此它不是默认值:
import matplotlib.pyplot as plt
x1 = 1
x2 = 2
y1 = 1
y2 = 4
plt.ion() # turn on interactive mode
plt.figure()
plt.xlim(0, 10) # set the limits so they don't change while plotting
plt.ylim(0, 10)
plt.hold(True) # turn hold on
plt.plot(x1, y1, 'b.')
input() # wait for user to press "enter", raw_input() on python 2.x
plt.plot(x2, y2, 'b.')
plt.hold(False) # turn hold off
对于一个循环,它会像这样工作:
import matplotlib.pyplot as plt
import numpy as np
xs = np.arange(10)
ys = np.arange(10)**2
plt.ion()
plt.figure()
plt.xlim(0, 10)
plt.ylim(0, 100)
plt.hold(True)
for x, y in zip(xs, ys):
plt.plot(x, y, 'b.')
input()
plt.hold(False)
但是,如果您使用IPython,则可以使用%pylab
,它负责导入所有内容并启用交互模式:
%pylab
xs = arange(10)
ys = arange(10)**2
figure()
xlim(0, 10) # set the limits so they don't change while plotting
ylim(0, 100)
hold(True)
for x, y in zip(xs, ys):
plot(x, y, 'b.')
input() # raw_input() on python 2.x
hold(False)