Python 使用regplot调用地物对象时如何抑制seaborn输出
我试图在matplotlib中将数据绘制到图形和相应的轴上,随着新的工作的进行,在轴上绘制额外的图形:Python 使用regplot调用地物对象时如何抑制seaborn输出,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我试图在matplotlib中将数据绘制到图形和相应的轴上,随着新的工作的进行,在轴上绘制额外的图形: 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
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
如果我使用seaborn的regplot,则matplotlib可以正常工作:
fig2,ax2=plt.subplots()
sns.regplot(x,x,ax=ax2,fit_reg=False)
sns.regplot(x,y,ax=ax2,fit_reg=False)
fig2
图2生成了我想要的图形,但regplot命令生成了一个空图形。有没有办法抑制regplot的空输出,或者让它在不调用图2的情况下显示更新的ax2?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
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
您似乎正在使用带有内联后端的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
您必须在创建图形之前进行调用,才能使其正常工作。之后,您必须显式显示图形。然后您可以调用以恢复默认行为。您似乎正在使用带有内联后端的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
您必须在创建图形之前进行调用,才能使其正常工作。之后,您必须显式显示图形。然后您可以调用以恢复默认行为。可能是因为我正在jupyter笔记本中运行上述操作,但是如果我运行sns.regplot(x,y,ax=ax2,fit_reg=False)在前面代码的单独单元格中生成一个空数字。这可能是因为我正在jupyter笔记本中运行上述操作,但是如果我在前面代码的单独单元格中运行sns.regplot(x,y,ax=ax2,fit_reg=False),则生成一个空数字。感谢Goyo,就像你说的不是解决方案而是一个很好的解决方案谢谢!谢谢Goyo,就像你说的不是解决方案而是一个很好的解决方案谢谢!