如何更改 regplot() 的点大小,seaborn 的散点图函数 (python)

How to change the point size for regplot(), seaborn's scatter plot function (python)

我希望能够像这样在绘图时设置磅值:

sns.regplot(y=[1,3,4,2,5], x=[range(5)], data=df,
            marker='o', color='red')
plt.show()

你们知道怎么做吗?

为此,您可以像这样向 regplot() 函数提供 scatter_kws 参数:

import seaborn as sns
tips = sns.load_dataset('tips')
sns.regplot(x='total_bill', y='tip', data=tips,
            marker='o', color='red', scatter_kws={'s':2})

sns.regplot(x='total_bill', y='tip', data=tips,
            marker='o', color='red', scatter_kws={'s':20})

我想在 mburke05 的回答中补充一点,似乎可以将 array-like 数据传递到 scatter_kws. 例如,如果您希望 tips 数据集中的 size 属性确定大小你可以写的观点:

sns.regplot(
    x="total_bill", y="tip", data=tips,
    marker='o', color='red', scatter_kws={'s':tips['size']})

但是,您必须在数据框中明确查找该属性(如上所述);您不能像设置 xy.

时那样简单地使用列名

您甚至可以动态调整点的大小以表示三维。此代码使用与 OP 相同的数据,但将其包装在 DataFrame 中(因为 seaborn 就是为此而设计的)并且还添加了第三个维度 z.

import seaborn as sns
import pandas as pd

data = pd.DataFrame({
    'x': [x for x in range(5)],
    'y': [1, 3, 4, 2, 5],
    'z': [14, 14, 100, 16, 36]
})
sns.regplot(x='x', y='y', data=data, marker='o', color='red',
    scatter_kws={'s': data['z']})

您或许可以想象如何以编程方式操纵 list/array 大小,从而赋予您传达额外信息的强大功能。

如果您想将它们分成两组,就像在 FacetGrid 中一样,regplot 不会干净地处理该关键字映射。但是散点图可以。只需在下面绘制拟合线的 regplot,然后在其上绘制点的散点图。下面,我添加了一个 grp 变量并将其绘制到 FacetGrid 上。

import seaborn as sns
import pandas as pd

data = pd.DataFrame({
    'x': [x for x in range(5)],
    'y': [1, 3, 4, 2, 5],
    'z': [14, 14, 100, 16, 36],
    'grp': ['a', 'a', 'b', 'b', 'a'],
})
g = sns.FacetGrid(data=data, col='grp', margin_titles=True)
g.map_dataframe(sns.regplot, 'x', 'y', color='red', scatter=False)
g.map_dataframe(sns.scatterplot, 'x', 'y', size='z', marker='o', color='red')