【发布时间】:2018-06-20 00:33:12
【问题描述】:
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() 之间的区别可以 有点棘手。事实上,它们是密切相关的,因为 lmplot() 使用 regplot() 内部并采用其大部分参数。然而, regplot() 是轴级函数,因此它直接绘制到轴上 (当前活动的轴或由 ax 提供的轴 参数),而 lmplot() 是一个图形级函数并创建其 自己的图形,通过 FacetGrid 管理。这有几 结果,即 regplot() 可以愉快地共存于一个图中 与其他类型的绘图,并将遵循全局 matplotlib 颜色 循环。相比之下,lmplot() 需要占据整个图形,而 大小和颜色循环通过函数参数控制, 忽略全局默认值。
但我不完全理解“图形”和“轴”之间的区别。在不知道这里的底层模型的情况下,我能做出的最好猜测是,当 Seaborn 中内置的这些奇怪的全局状态变异函数(如 despine 和(?)set_palette 等)处于活动状态时,只有“数字”,而不是“轴”在渲染之前检查该状态?但是,如果是这样,我将如何获得根据我的要求生成“轴”的东西?
【问题讨论】:
-
也许不是骗子,但这个问题有助于解释图形和轴之间的差异 - stackoverflow.com/questions/47065244/…
-
这很有帮助。我认为我真正想要的是学习底层的面向对象的接口,而不是在上面搞那些有漏洞的抽象!
标签: python matplotlib data-visualization seaborn