首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在海运中,kwargs和scatter_kws有什么区别?

在海运中,kwargs和scatter_kws有什么区别?
EN

Stack Overflow用户
提问于 2019-06-17 20:21:08
回答 2查看 1.5K关注 0票数 0

由于海运使用matplotlib进行绘图,所以大部分(全部?)它的函数有一些方法可以将参数传递给绘制绘图的下面的matplotlib函数。这是一个很好的设计,它允许灵活性,而不把高级别的海运功能与太多的参数相混淆。

然而,似乎有两种不同的机制来做到这一点。有些函数只是接受任意关键字参数,而任何高级函数无法识别的都只是简单地传递给底层matplotlib函数。另一些则要求您将额外的关键字参数放入dict中。

例如,seaborn.scatterplotseaborn.lmplot都使用matplotlib.pyplot.scatter作为底层绘图函数。如果我们想将s参数传递给matplotlib.pyplot.scatter以控制大小,那么在seaborn.scatterplot中,我们可以将它添加到函数调用中:

代码语言:javascript
复制
sns.scatterplot(data=df, x='mpg',y='weight',s=10)

但是在seaborn.lmplot中,我们必须把它塞进一个scatter_kws代码中:

代码语言:javascript
复制
sns.lmplot(data=df, x='mpg',y='weight', scatter_kws={'s' : 10})

也许我遗漏了一些显而易见的东西,但我一直无法弄清楚为什么会使用这些不同的机制。是因为海运工作方式内部的某些东西对最终用户来说是不可见的吗?是一种风格遗产,而代码正在转向另一种样式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-17 20:36:43

seaborn.lmplot具有scatter_kwsline_kws参数。scatter_kws关键字dict传递给对Matplotlib的scatter函数的底层调用,而line_kws传递给对Matplotlib的plot函数的底层调用。

由于底层Matplotlib scatterplot调用共享一些关键字参数(例如color),因此使用两个dicts允许用户单独控制这两个参数。也就是说,用户可以指定散点图颜色为,比如说,红色,而线条图可以是蓝色。

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

票数 1
EN

Stack Overflow用户

发布于 2019-06-17 20:36:54

lmplot将一个regplot绘制到一个FacetGrid上。regplot由一组点(用于scatter )和一行(用于plot )组成。

假设您将参数s传递给每个基础matplotlib函数。它将被传递给scatter (它用于其目的),但也传递给没有任何s参数的plot。轰隆隆。错误。

此外,还有一些参数对两者都有效,比如color;但是您可能希望正则图行与点颜色不同。

这就是为什么将几个绘图类型组合在一起的seaborn中的函数允许这些单独的参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56638399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档