为何jointplot可运行特定参数格式代码,lmplot却报错?
为什么Seaborn的jointplot和lmplot参数格式要求不同?
这是因为两个函数的API设计目标和参数逻辑存在差异:
jointplot的参数逻辑:
jointplot的前两个位置参数x和y支持直接传入数组、Series这类向量数据,参数设计更灵活——既可以单独传向量,也可以配合data参数传入列名字符串。所以直接传df["Time on Website"]和df["Time on App"]这类Series,完全符合它的参数要求,能正常运行。lmplot的参数逻辑:
lmplot的核心定位是支持分面回归绘图(比如按某列分组生成多个子图),因此它的API设计优先面向数据框。它的位置参数x和y默认要求传入数据框中的列名字符串,这时候必须配合data参数指定对应的DataFrame,否则函数找不到列名对应的数据源,就会抛出“Missing required keyword argumentdata”的错误。如果你非要像jointplot那样传Series给lmplot,也可以通过显式指定关键字参数的方式实现:
sns.lmplot(x=df["Time on Website"], y=df["Time on App"])但这种用法不是lmplot的设计初衷,更推荐的标准写法是用列名+data的组合:
sns.lmplot(x="Time on Website", y="Time on App", data=df)
内容的提问来源于stack exchange,提问作者Kumar Utkarsh
相关产品推荐
相关产品推荐

