2017-06-20 104 views
1

我想將matplotlib嵌入到PyQt4 + Python 2.7應用程序中,這樣我就可以在我的UI中可視化圖像(即2D)數據。我想利用一些matplotlib的功能,如色彩映射表,縮放,等我發現網上一些教程但那是我的問題是最接近的SO問題如下:在PyQt4中嵌入matplotlib

Embedding matplotlib in pyqt4 using imshow

像作者一樣,我也想使用「imshow(...)」。通過網上下一個教程,我可以在我作爲一個QWidget UI嵌入matplotlib如下:

self.mainImage = MatPlotLibImage() 
self.setWidget(self.mainImage) 

此:

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
import numpy as np 
from matplotlib.figure import Figure 
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas 

class matPlotLibImage(FigureCanvas): 
    def __init__(self): 
     self.fig = Figure() 
     self.axes = self.fig.add_subplot(111) 
     self.x = np.arange(0.0, 3.0, 0.01) 
     self.y = np.cos(2*np.pi*self.x) 
     self.axes.plot(self.x, self.y) 
     super(MatPlotLibImage, self).__init__(self.fig) 

在我QDockWidget派生類的代碼,然後可以通過嵌入上述matplotlib部件按預期工作並顯示一個簡單的情節。但是,現在我想顯示用numpy數組表示的圖像數據。我在網上看到的所有例子都是用下面的變體:

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 

img = mpimg.imread("someImage.png") 
imgplot = plt.imshow(img) 

我的問題是:我如何結合這兩種方法,這樣我可以用「imshow()」,但嵌入式像我一樣的簡單的情節?先謝謝你。說明:嚴格來說,我使用'imshow(whatever)'並不重要,我只是對在嵌入式matplotlib小部件中顯示圖像數據感興趣(在一個numpy數組中)。但是,imshow確實有一些我想要利用的有用的東西。

回答

1

這聽起來像你只需要

self.axes.imshow(img) 

其中img是圖像的numpy的陣列,以取代線self.axes.plot(self.x, self.y),你必須已加載在這之前。

+0

謝謝。請參閱下面的評論。 – LKeene