首页 文章

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

提问于
浏览
3

K这是我想要做的更精确的例子 . 我使用WXBuilder for Python作为我的用户界面,具有多种绘图功能,即用户必须能够根据他们选择的参数绘制图形 . 在绘制图形之后,我希望用户能够在不关闭第一个图形的情况下绘制第二个图形 . 这是为了比较的目的 . 下面是我想要做的一个过于简单的例子 .

将matplotlib导入为plt

def OnPlotClick1(自我,事件):
plt.plot(self.DateArray1,self.kVAArray2)plt.show()

def OnPlotClick2(自我,事件):
plt.plot(self.DateArray1,self.kVAArray2)plt.show()

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

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

4 回答

  • 1

    你不应该阻止节目 . 使用:

    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
    
  • 4

    每个窗口都是用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 .

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

    您可以按照@(Corrupted MyStack)建议或使用交互式图形设置 . 跑

    plt.ion()
    

    一次,在你开始这个阴谋之前的任何时候 . 把它关掉

    plt.ioff()
    

相关问题