gpt4 book ai didi

python - Seaborn的散点图和lmplot参数的区别

转载 作者:行者123 更新时间:2023-12-05 05:11:19 25 4
gpt4 key购买 nike

一些快速加载:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

di = sns.load_dataset('iris')

在此处使用示例 iris 数据集。如下所示轻松创建散点图:

sns.scatterplot(x=di['sepal_length'], y=di['sepal_width'], 
hue=di['species']);

然而,使用 lmplot 会引发 TypeError 并需要数据参数。完成数据参数后,它仍然不起作用:

sns.lmplot(x=di['sepal_length'], y=di['sepal_width'], 
hue=di['species'], data=di);

TypeError: '<' not supported between instances of 'str' and 'float'

但是,这工作得很好:

sns.lmplot(x='sepal_length', y='sepal_width', hue='species', data=di);

看完API reference ,我看到 lmplot 需要数据参数,但散点图不需要。这里的引擎盖下发生了什么不同的事情吗?还有什么是此处语法的最佳实践。

最佳答案

您的代码不起作用的原因是误用了 data 参数。在传递 data 的地方,xyhue 将被视为索引传递对象的对象在 data 中,使用其 __getitem__ 方法。因此,例如,x='sepal_length', y='sepal_width', data=di 等同于 x=di['sepal_length'], y=di['sepal_width']

因此,这会运行:

sns.lmplot(x='sepal_length', y='sepal_width', hue='species', data=di);

您尝试做的基本上等同于 x=di[di['sepal_length']], y=di[di['sepal_width']], hue=di[di['species']]

回到关于 scatterplotlmplot 之间区别的问题的第二部分:

scatterplot 是一个 Axes 级函数;它仅依赖于 matplotlibAxes 对象,该对象在绘图时可以使用多种集合类型,如 listsnp .ndarrays。在功能上,它或多或少与 pyplot.scatter 相同,但带有一些默认的花哨颜色。

另一方面,lmplot 依赖于 sns.FacetGrid(可用文档 here)。 FacetGrid 是一个纯粹的 sns 对象,在构造时需要一个 pd.DataFrame。因此,要使 lmplot 正常工作,它必须采用 pd.DataFrame

关于python - Seaborn的散点图和lmplot参数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55566252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com