Python Matplotlib添加\子批次和更改\几何体错误?

Python Matplotlib添加\子批次和更改\几何体错误?,python,matplotlib,Python,Matplotlib,我正在使用嵌入式Matplotlib 1.4.3构建PyQt4 GUI。它允许用户从可用参数列表中选择要打印的参数,并为这些参数提供添加/删除、重新缩放子批次等控制,以将其数据发送到。不管怎么说,我遇到了这样的行为,添加子图,然后更改几何图形,这是我没有预料到的 在2,1,2位置生成子批次: import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 10, 0.1) y1 = 0.05 * x**2 y2 = -1

我正在使用嵌入式Matplotlib 1.4.3构建PyQt4 GUI。它允许用户从可用参数列表中选择要打印的参数,并为这些参数提供添加/删除、重新缩放子批次等控制,以将其数据发送到。不管怎么说,我遇到了这样的行为,添加子图,然后更改几何图形,这是我没有预料到的

在2,1,2位置生成子批次:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1
figure = plt.figure()
ax1 = figure.add_subplot(2,1,2,label='sub2')
ax1.plot(x, y1, 'g-')
plt.show()
这是一个错误让我们将其更改为子地块1并重新标记

ax1.change_geometry(2,1,1)
ax1.set_label('sub1')
好的,现在让我们添加子地块2的实时这一次

ax2 = figure.add_subplot(2,1,2,label='sub2')
ax2.plot(x, y2, 'b-')
plt.draw()
等一下,它标在1号地块上。。。我的第二副地块在哪里?让我们看看ax1和ax2

ax1
<matplotlib.axes._subplots.AxesSubplot at 0xcaa32b0>
ax2
<matplotlib.axes._subplots.AxesSubplot at 0xcaa32b0>

它们是相同的轴吗?所以经过一些挖掘,我发现它是固定的。。。但在我看来不是这样的。我是否遗漏了什么,或者这仍然是一个问题

我在Github上创建了一个问题。已确认并添加到下一个发布点里程碑


您使用的matplotlib版本是什么?您的示例在1.4.3中非常适合我,如上所述,我使用的是1.4.3。所以最后你有两个独立的子地块?我已经在两台不同的机器上使用了它,一台是1.4.3,另一台是1.4.2,都在Ipython控制台和使用anaconda的常规Python3中,我得到了上面图片中显示的结果。。。奇怪。啊,对不起,我只是错过了问题中的版本。是的,当我尝试它时,我会得到两个独立的子批次。嗯。你是以互动的方式还是以脚本的形式?好吧,你是对的,这很奇怪。当我把整个代码放到一个单元格中时,我复制了你的结果。当我第一次尝试它的时候,我只是一行一行地把东西输入ipython,效果很好。嗯……我最初的问题是在PyQT4 GUI应用程序中,用户可以操作/移动/添加子批次。偶尔使用正确的添加/删除等步骤,我会在错误的轴上绘制一条线,并丢失子图。完整的应用程序需要很长时间才能在这里发布,所以我将其缩减为一个小示例来演示这个问题。在我的PyQT应用程序中唯一真正的区别是我不使用matplotlib.pyplot,而是导入Figure和FigureCanvasQTAgg。。。但无论哪种方式,行为都是一样的。