gpt4 book ai didi

python - 无法让 Canvas 在 matplotlib 中绘制无花果

转载 作者:行者123 更新时间:2023-11-28 17:51:07 28 4
gpt4 key购买 nike

根据我对使用 matplotlib 的基本理解,您将所需的 plt 存储在一些“无花果”中,然后您可以使用 canvas.draw() 操作绘制所述“无花果”。如果是这种情况,那么我应该没有任何问题,但既然我这样做了,到底发生了什么,在 Canvas 上得到一些东西背后的逻辑是什么。此外,我的最终目标是在 QtPy 窗口中显示此图。到目前为止的结果是我可以显示窗口和 Canvas ,但 Canvas 显示为空。我一直在看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是正确的?在我看来,您的代码的方式是您使用 pyplot 生成数据(您不保留其返回值),然后绘制它,但我认为它实际上并未在您的轴实例上运行。

关于我如何使用 matplotlib 的例子可以在这里找到:Segfault using matplotlib with PyQt .. 他实际上是在直接创建 PyQt4 FigureCanvas 并直接绘制到他的轴实例。

似乎pyplot.plot()方法可以采用图形和轴参数来告诉它使用哪个实例。我想知道它是否没有使用您的轴,因为我在您的示例中看不到您如何创建轴本身。看看docs here

我猜你可能会尝试做这样的事情:

plt.plot(ind, kdepdf, 'g', axis=self.axis, linewidth=0.8, label='kde')

或者,可以通过使用 self.axis = plt.axis() 确认您已经创建了 self.axis,或者甚至尝试直接使用轴实例?

关于python - 无法让 Canvas 在 matplotlib 中绘制无花果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612241/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com