无法让画布在matplotlib中绘制无花果

2024-10-01 00:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

根据我对使用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()

Tags: selfplotmatplotlib画布npfigpltgrid
1条回答
网友
1楼 · 发布于 2024-10-01 00:27:15

我对matplotlib没有任何经验,但是在查看代码时,我想知道您对^{}的使用是否正确?在我看来,您的代码是使用pyplot生成数据(不保留返回值),然后绘制数据,但我认为它实际上并没有在axis实例上运行。在

下面是我如何使用matplotlib的一个例子:Segfault using matplotlib with PyQt。。他实际上直接创建了一个PyQt4 FigureCanvas并直接绘制到他的axis实例。在

似乎^{}方法可以通过figure和axis参数来告诉它要使用哪个实例。我想知道它是否没有使用你的轴,因为我无法在你的例子中看到你是如何创建轴本身的。看看docs here

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

^{1}$

或者,也许可以通过使用self.axis = plt.axis()来确认您已经创建了self.axis,或者甚至尝试直接用axis实例进行所有的绘图?在

相关问题 更多 >