Plotting second figure with matplotlib while first is still open

K here's a more precise example of what I am trying to do. I am using WXBuilder for Python as my user interface with multiple plotting functionality ie the user must be able to plot a graph based on their chosen parameters. After a graph is plotted I want the user to be able to plot a second without closing the first figure. This is for comparison purposes. Below is an oversimplified example of what I am looking to do.

import matplotlib as 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()

Now I am assuming my problem is arising due plotting and showing() the graph, and therefore the program somehow is blocked from functionality until the first figure or plot window is closed.

I hope this explains my problem better.


您也可以在同一幅图中绘制两个或两个以上的绘图仪

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

You should not block show. Use:

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

Each window is in matplotlib parlance, a new figure. You can call plt.subplots twice to create two figures:

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

Note that plt.show() starts a GUI event loop and so generally it should only be called once per script.

链接地址: http://www.djcxy.com/p/67598.html

上一篇: Matplotlib Pyplot标志/图中的情节

下一篇: 用matplotlib绘制第二个图时首先仍然打开