![](/img/trans.png)
[英]How to stop Seaborn residplot ignoring hue (colour) when scatter_kws is used in PairGrid
[英]What's the difference between kwargs and e.g. scatter_kws in seaborn?
由于seaborn使用matplotlib进行绘图,因此其大多数功能(全部?)都可以通过某种方式将参数传递给绘制绘图的基本matplotlib函数。 这是一个很好的设计,它具有灵活性,而不会因过多的参数而使高级Seaborn功能混乱不堪。
但是,这样做似乎有两种不同的机制。 有些函数只接受任意的关键字参数,而高级函数无法识别的任何参数都只是传递给底层的matplotlib函数。 其他要求您将其他关键字参数放入字典中。
例如,两个AFAIK的seaborn.scatterplot
和seaborn.lmplot
都使用matplotlib.pyplot.scatter
作为基础绘图功能。 如果我们想将s
参数传递给matplotlib.pyplot.scatter
以控制大小,在seaborn.scatterplot
我们可以将其添加到函数调用中:
sns.scatterplot(data=df, x='mpg',y='weight',s=10)
但是在seaborn.lmplot
我们必须将其填充到scatter_kws
字典中:
sns.lmplot(data=df, x='mpg',y='weight', scatter_kws={'s' : 10})
也许我缺少明显的东西,但是我无法弄清楚为什么使用这些不同的机制。 是由于Seaborn工作方式内部的某些东西对最终用户不可见? 是一种样式的遗产,而代码正在迁移到另一种样式?
seaborn.lmplot
具有scatter_kws
和line_kws
参数。 scatter_kws
关键字dict传递给Matplotlib的scatter
函数的基础调用,而line_kws
传递给Matplotlib的plot
函数的基础调用。
因为底层Matplotlib scatter
和plot
呼叫共享一些关键字参数(如color
)的常见的,使用两个类型的字典允许用户单独地控制这两者。 即,用户可以将散点图的颜色指定为红色,而线图可以为蓝色。
相反, sns.scatterplot
将其所有关键字参数发送到基础的Matplotlib scatter
调用。 因此,不需要消除歧义。
lmplot
绘制一个regplot
到FacetGrid
。 regplot
由一堆点(用于scatter
)和一条线(用于plot
)组成。
假设您将参数s
传递给每个基础的matplotlib函数。 这将转嫁到scatter
,在那里它服务宗旨,而且还plot
,这没有任何s
的说法。 繁荣。 错误。
此外,还有对两者都有效的参数,例如color
; 但是您可能希望重新绘图线的颜色与点的颜色不同。
这就是为什么seaborn中结合了几种绘图类型的函数允许使用这些单独的参数的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.