在用python编写的qt应用程序中扩展嵌入式matplotlib小部件的问题

在用python编写的qt应用程序中扩展嵌入式matplotlib小部件的问题,python,qt,pyqt,matplotlib,Python,Qt,Pyqt,Matplotlib,我正在写一个简单的数字图像处理程序。为此,我在qt应用程序中嵌入了一个mpl小部件。用户可以对图像执行一些简单的分析,如盒式汽车滤波器、FFT等。在我想从显示图像切换到显示绘图之前,一切都正常 如果我先显示一个绘图,则轴很好(请参见图中的底部绘图)。但如果我先显示一个图像,然后是一个绘图(图像中的顶部绘图),则比例会压缩 您可以使用imshow()的纵横比参数来调整身高和体重之间的比例: from pylab import * a = np.zeros((100,10)) # height=10

我正在写一个简单的数字图像处理程序。为此,我在qt应用程序中嵌入了一个mpl小部件。用户可以对图像执行一些简单的分析,如盒式汽车滤波器、FFT等。在我想从显示图像切换到显示绘图之前,一切都正常

如果我先显示一个绘图,则轴很好(请参见图中的底部绘图)。但如果我先显示一个图像,然后是一个绘图(图像中的顶部绘图),则比例会压缩


您可以使用imshow()的纵横比参数来调整身高和体重之间的比例:

from pylab import *
a = np.zeros((100,10)) # height=100, weight=10
subplot(211)
imshow(a)  # ratio = 10
subplot(212)
imshow(a, aspect=0.1) # ratio = 1
show()
但这将扩大形象

或者可以使用xlim()、ylim()设置x-y轴的范围

imshow(a)
xlim(-50,50)
编辑:

imshow()将axe的aspect属性设置为“equal”。在调用plot()之前需要重置它:


谢谢你的回答,但我的问题不是显示图像时的纵横比。图像始终正确显示。它是在显示图像后显示绘图的时候。这是aspect属性的问题,但我没有仔细阅读您的代码。在检查了你的代码之后,我编辑了答案。请再检查一遍。
from pylab import *
a = np.zeros((100,10)) # height=100, weight=10
subplot(211)
imshow(a)  # ratio = 10
subplot(212)
imshow(a, aspect=0.1) # ratio = 1
show()
imshow(a)
xlim(-50,50)
self.ui.mplWidget.canvas.ax.set_aspect("auto")
self.ui.mplWidget.canvas.ax.plot(self.xData,self.yData)