我肯定我忘了一件很简单的事,但我不能让某些情节与西伯恩合作。
如果我这样做:
import seaborn as sns
然后,我像往常一样使用matplotlib创建的任何图都将获得Seaborn样式(背景中有灰色网格)。
但是,如果我试着做其中的一个例子,例如:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
pairplot函数返回一个PairGrid对象,但不显示绘图。
我有点困惑,因为matplotlib看起来运行正常,Seborn样式应用于其他matplotlib绘图,但Seborn函数似乎什么都不做。有人知道问题出在哪里吗?
8条答案
按热度按时间frebpwbc1#
使用seborn创建的绘图需要像普通matplotlib绘图一样显示。这可以通过使用
函数的值。
最初我发布的解决方案是使用已经从seborn(
sns.plt.show()
)导入的matplotlib对象,但这被认为是一个不好的做法。因此,只需直接导入_matplotlib.pyplot_
模块并使用如果使用IPython笔记本,则可以调用内联后端以消除在每个情节后调用show的必要性。
icnyk63a2#
我经常会问这个问题,总是要花一段时间才能找到我想找的东西:
请注意:在Python 2中,你也可以使用
sns.plt.show()
,但在Python 3中不行。完整示例
给予
af7jpaap3#
为了避免混淆(评论中似乎有一些)。假设你在木星上:
%matplotlib inline
〉显示绘图在笔记本内sns.plt.show()
〉显示笔记本外部的图%matplotlib inline
将覆盖sns.plt.show()
,因为即使调用sns.plt.show()
,绘图也将显示在IN笔记本中。是的,可以很容易地将这一行包含到您的配置中:
Automatically run %matplotlib inline in IPython Notebook
但在实际代码中将其与导入放在一起似乎是一个更好的约定。
jmo0nnb34#
这对我很有效
kiayqfof5#
如果您在IPython console(在这里您不能使用
%matplotlib inline
)而不是Jupyter notebook中绘图,并且不想重复运行plt.show()
,您可以使用ipython --pylab
启动IPython console:z4bn682m6#
我的建议是
plt.figure()
并给予一些sns图。例如sns.distplot(data)
.虽然它会看起来它没有显示任何情节,当你最大化的数字,你将能够看到情节。
cx6n0qe37#
从代码片段的风格来看,我想您使用的是IPython而不是Jupyter Notebook。
在GitHub上的这一期中,IPython的一位成员在2016年明确表示,图表的显示只有在“Jupyter内核才能工作”的情况下才能工作,因此
%matplotlib inline
将无法工作。我只是有同样的问题,并建议您使用Jupyter笔记本的可视化。
kokeuurv8#
如果
g
是facet.grid对象,则尝试使用g.fig
强制绘图。