繁体   English   中英

seaborn中的kwargs和例如scatter_kws有什么区别?

[英]What's the difference between kwargs and e.g. scatter_kws in seaborn?

由于seaborn使用matplotlib进行绘图,因此其大多数功能(全部?)都可以通过某种方式将参数传递给绘制绘图的基本matplotlib函数。 这是一个很好的设计,它具有灵活性,而不会因过多的参数而使高级Seaborn功能混乱不堪。

但是,这样做似乎有两种不同的机制。 有些函数只接受任意的关键字参数,而高级函数无法识别的任何参数都只是传递给底层的matplotlib函数。 其他要求您将其他关键字参数放入字典中。

例如,两个AFAIK的seaborn.scatterplotseaborn.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_kwsline_kws参数。 scatter_kws关键字dict传递给Matplotlib的scatter函数的基础调用,而line_kws传递给Matplotlib的plot函数的基础调用。

因为底层Matplotlib scatterplot呼叫共享一些关键字参数(如color )的常见的,使用两个类型的字典允许用户单独地控制这两者。 即,用户可以将散点图的颜色指定为红色,而线图可以为蓝色。

相反, sns.scatterplot将其所有关键字参数发送到基础的Matplotlib scatter调用。 因此,不需要消除歧义。

lmplot绘制一个regplotFacetGrid regplot由一堆点(用于scatter )和一条线(用于plot )组成。

假设您将参数s传递给每个基础的matplotlib函数。 这将转嫁到scatter ,在那里它服务宗旨,而且还plot ,这没有任何s的说法。 繁荣。 错误。

此外,还有对两者都有效的参数,例如color ; 但是您可能希望重新绘图线的颜色与点的颜色不同。

这就是为什么seaborn中结合了几种绘图类型的函数允许使用这些单独的参数的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM