K这里是我想要做的更准确的例子。我使用WXBuilder for Python作为我的用户界面,具有多种绘图功能,即用户必须能够根据他们选择的参数绘制图形。在绘制图形之后,我希望用户能够在不关闭第一个图形的情况下绘制第二个图形。这是为了比较的目的。下面是我想要做的一个过于简单的例子。
将matplotlib导入为plt
def OnPlotClick1(self,event):
plt.plot(self.DateArray1,self.kVAArray2)
plt.show()
def OnPlotClick2(self,event):
plt.plot(self.DateArray1,self.kVAArray2)
plt.show()
现在我假设我的问题是由于绘图和显示()图形而产生的,因此程序以某种方式被阻止功能,直到第一个图或绘图窗口关闭。
我希望这能更好地解释我的问题。
答案 0 :(得分:4)
你不应该阻止节目。使用:
import matplotlib.pylab as plt
plt.plot([1,2,3]) # first plot
plt.show(block=False) # do not block
plt.plot([11,21,31]) # second plot
答案 1 :(得分:1)
每个窗口都是用matplotlib的说法,一个新的数字。您可以拨打plt.subplots
两次以创建两个数字:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
y1 = np.sin(x)*np.exp(-x/5.0)
y2 = np.sin(x**2)*x
fig1, ax1 = plt.subplots()
ax1.plot(x, y1)
fig2, ax2 = plt.subplots()
ax2.plot(x, y2)
plt.show()
请注意plt.show()
启动GUI事件循环,因此每个脚本通常should only be called once。
答案 2 :(得分:1)
您还可以在同一图中绘制2个或2个以上的绘图仪
import matplotlib.pyplot as plt
def my_plotter(ax, data1, data2, param_dict):
out = ax.plot(data1, data2, **param_dict)
return out
fig, (ax1, ax2) = plt.subplots(1, 2)
#here you put your data
data1=[0,1,2,3,8]
data2=[0,1,2,3,8]
data3=[0,1,2,3,8]
data4=[0,1,2,3,8]
my_plotter(ax1, data1, data2, {'marker':'x'})
my_plotter(ax2, data3, data4, {'marker':'o'})
plt.show()