【发布时间】:2015-10-23 20:30:02
【问题描述】:
我想问一下如何在wxPython 面板中嵌入 seaborn 人物。
与post 类似,我想在wxPython 面板中嵌入一个外部图形。根据 Seaborn 的kdeplot 函数,我希望我的wxPython GUI 的特定面板根据高斯核的带宽值绘制我的数据的密度等值线,以及数据点的散点图。这是我希望在面板中绘制的示例:
直到现在,我已经设法从wxPython 面板中获得了我想要的一个单独的图形。是否可以在wxPython 面板中嵌入一个 seaborn 绘图,或者应该找到一种替代方法来实现我的想要吗?
下面是我的代码的特定部分,它会在需要时生成绘图:
import seaborn as sns
import numpy as np
fig = self._view_frame.figure
data = np.loadtxt(r'data.csv',delimiter=',')
ax = fig.add_subplot(111)
ax.cla()
sns.kdeplot(data, bw=10, kernel='gau', cmap="Reds")
ax.scatter(data[:,0],data[:,1], color='r')
fig.canvas.draw()
这部分代码在 wxPython 面板中绘制分散的数据点,并为密度等值线创建外部图形。但是,如果我尝试ax.sns.kdeplot(...) 我会收到错误
属性错误:AxesSubplot 对象没有属性 .sns
我不知道是否可以在wxPython 面板中嵌入 Seaborn 图形,或者我应该尝试以其他方式实现它。有什么建议吗?
提前致谢。
【问题讨论】:
-
seaborn (
sns) 使用 MPL,但它是一个完全独立的库。ax.sns没有意义。你想将ax传递给sns.kdeplot函数。 -
我正是这样做的,它就像一个魅力。我在函数的page 上注意到它接受这样的参数。更具体地说,
ax参数显示要绘制的 轴。因此,就我而言,我通过以下方式解决了我的问题:sns.kdeplot(data, **ax=ax**, bw=10, kernel='gau', cmap="Reds")。非常感谢你:)。
标签: python matplotlib wxpython seaborn kernel-density