Jupyter笔记本,使用Python 3:
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.despine()
然后
snstest1 = sns.regplot(x="foo", y="bar", data=my_data)
显示带有不需要的边框的情节(即sns.despine()似乎没有影响它。)
但是:
snstest2 = sns.lmplot(x="foo", y="bar", data=my_data)
显示正确删除了不需要的边框的绘图。
我能找到的唯一可以直接看到的文件如下:the api docs for regplot:
了解regplot()和lmplot()之间的区别可以是a 有点棘手。事实上,正如lmplot()所使用的那样,它们密切相关 regplot()在内部并占用其大部分参数。然而, regplot()是一个轴级函数,因此它直接绘制到轴上 (当前活动的轴或轴提供的轴) 参数),而lmplot()是一个图级功能并创建它 自己的形象,通过FacetGrid管理。这有一些 后果,即regplot()可以愉快地共存于一个数字中 与其他种类的情节一起,将遵循全球matplotlib颜色 周期。相比之下,lmplot()需要占据整个数字,而且 尺寸和颜色周期通过功能参数控制, 忽略全局默认值。
但我并不完全理解"数字"和#34;轴。"在不知道底层模型的情况下,我可以做出的最佳猜测是,当Seaborn内置的这些奇怪的全局状态变异函数(如despine
和(?)set_palette
等)处于活动状态时,只有& #34;图中,"不是"轴,"在渲染之前检查那个状态?但是,如果是这样的话,我将如何获得产生"轴的东西"根据我的要求进行策划?
答案 0 :(得分:2)
简而言之:在您的绘图功能后调用sns.despine
。
版本较长:
lmplot
创造了自己的身材。但它不需要despine。即使不调用sns.despine
,它也会自动执行。
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", data=tips)
plt.show()
这就是问题中的代码实际上似乎有效的原因
但是,真正发生的是,如果在创建任何图形之前调用sns.despine
,它将作用于新创建的图形。因此,问题的代码创建了两个数字。一个是空的,但也是'#34; despined"然后是一个lmplot
数字,而且是#34; despined"因为默认情况下每个lmplot
都被鄙视。
而是在matplotlib图的轴上创建regplot
。如果没有提供图形或轴,则会创建一个新图形或轴。这意味着sns.despine
需要知道哪些轴要去高山。如果你先把它召唤出来,那么又会有两个数字:一个是空的,但也是#34; despined"然后是一个regplot
数字。这个数字轴并没有被鄙视",因为没有人告诉他们。
所以我们的想法当然是在创建情节后调用sns.despine
。您可以指定despine的哪个或哪些数据作为参数(sns.despine(ax=ax)
)
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
ax = sns.regplot(x="total_bill", y="tip", data=tips)
sns.despine(ax=ax)
plt.show()
但是如果你只有一个甚至不需要的子图。因此
tips = sns.load_dataset("tips")
sns.regplot(x="total_bill", y="tip", data=tips)
sns.despine()
将同样有效并产生