根据我对使用matplotlib的基本理解,您将所需的plt存储在一些'fig'中,然后您可以使用画布.draw()操作。如果是这样的话,我应该不会有任何问题,但既然我这样做了,到底发生了什么事,在画布上得到一些东西背后的逻辑是什么。另外,我的最终目标是在QtPy窗口中显示这个图。到目前为止的结果是,我可以让窗口和画布显示,但画布显示为空。我一直在看http://matplotlib.sourceforge.net/users/artists.html,觉得我所做的并不是完全错误,但也许我忽略了一些细微差别。下面是我引用的代码:
def drawThis(self):
self.axes.clear()
self.axes.grid(self.grid_cb.isChecked())
self.fig = plt.figure(figsize=(11,7),dpi=self.dpi)
file = fileList[selFile]
valid = [sColumn]
matrix = np.loadtxt(file, skiprows=1, usecols=valid)
colCount = np.loadtxt(file, dtype=object)
totalCols = colCount.shape[1]
kdeData = np.array(matrix)
dataRange = (Decimal(max(abs(kdeData))) / 10).quantize(1, rounding=ROUND_UP) * 10
gkde = stats.gaussian_kde(kdeData)
ind = np.linspace(-int(dataRange), int(dataRange), len(kdeData) * sSamples)
kdepdf = gkde.evaluate(ind)
##plot histogram of sample
plt.hist(kdeData, len(kdeData), normed=1, alpha=0.20)
##plot data generating density
plt.plot(ind, stats.norm.pdf(ind), 'r', linewidth=0.8, label='DGP normal')
##plot estimated density
plt.plot(ind, kdepdf, 'g', linewidth=0.8, label='kde')
plt.title('KDE for '+ str(nameList[selFile]))
plt.legend()
self.fig.canvas.draw()
我对matplotlib没有任何经验,但是在查看代码时,我想知道您对^{} 的使用是否正确?在我看来,您的代码是使用pyplot生成数据(不保留返回值),然后绘制数据,但我认为它实际上并没有在axis实例上运行。在
下面是我如何使用matplotlib的一个例子:Segfault using matplotlib with PyQt。。他实际上直接创建了一个PyQt4 FigureCanvas并直接绘制到他的axis实例。在
似乎^{} 方法可以通过figure和axis参数来告诉它要使用哪个实例。我想知道它是否没有使用你的轴,因为我无法在你的例子中看到你是如何创建轴本身的。看看docs here
我猜你可能会尝试这样做:
^{1}$或者,也许可以通过使用
self.axis = plt.axis()
来确认您已经创建了self.axis
,或者甚至尝试直接用axis实例进行所有的绘图?在相关问题 更多 >
编程相关推荐