2016-12-15 51 views
0

我想数据绘制在matplotlib的数字,相应的轴和新的工作来了,回想起与轴上的附加剧情的人物形象对象时抑制seaborn输出:如何回顾与regplot

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 
%matplotlib inline 

x=np.arange(0,20) 
y=2*x 

fig,ax=plt.subplots() 
ax.scatter(x,x) 

ax.scatter(x,y) 
fig 

的正常工作与matplotlib,如果我使用,无论seaborn的regplot:

fig2,ax2=plt.subplots() 
sns.regplot(x,x,ax=ax2,fit_reg=False) 

sns.regplot(x,y,ax=ax2,fit_reg=False) 
fig2 

fig2产生,我想这个数字,但regplot命令生成一个空的身影。有没有办法抑制regplot的空输出或让它显示更新的ax2而不回想fig2?

回答

0

看来你正在使用的直列后端的jupyter笔记本。在某些情况下,regplot会触发创建新的图形,即使艺术家被添加到前一个,这混乱了输出。我不知道为什么会发生这种情况,但我发现了一种解决方法,可以帮助您,使用plt.ioff暂时禁用数字的自动显示。

plt.ioff() 
fig, ax = plt.subplots() 
sns.regplot(x, x, ax=ax) 
fig 

sns.regplot(x, 2 * x, ax=ax) 
fig 

您必须在创建图表之前致电plt.ioff才能使其工作。之后,你必须明确地显示数字。然后您可以拨打plt.ion来恢复默认行为。

+0

感谢Goyo,就像你说的不是解决方案,而是一个很好的解决方法,谢谢! –

0

regplot不会生成空白图。根据文档:

了解regplot()和lmplot()之间的差异可能是一个有点棘手的 。事实上,它们是密切相关的,因为lmplot()在内部使用 regplot()并且占用了其大部分参数。但是, regplot()是一个轴级功能,因此它直接绘制到轴 (当前活动的轴或参数ax 提供的轴)上,而lmplot()是一个图形级功能并创建其 自己的数字,这是通过FacetGrid管理。

当我做到以下几点:

fig2,ax2 = plt.subplots() 
same_fig2 = sns.regplot(x,x,ax=ax2,fit_reg=False) 

same_fig2.figure is fig2 
>>> True 
+0

这可能是事实,我在jupyter笔记本上运行上述,但是如果我运行sns.regplot(x,y,ax = ax2,fit_reg = False)在 –

+0

前面的代码,然后单独的单元格中生成空的图形。 –