首先用matplotlib绘制第二个数字仍然是打开的

时间:2015-01-27 12:59:51

标签: python matplotlib plot

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()

现在我假设我的问题是由于绘图和显示()图形而产生的,因此程序以某种方式被阻止功能,直到第一个图或绘图窗口关闭。

我希望这能更好地解释我的问题。

3 个答案:

答案 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()