【问题标题】:How to change the point size for regplot(), seaborn's scatter plot function (python)如何更改 regplot() 的点大小,seaborn 的散点图函数(python)
【发布时间】:2016-08-23 14:58:33
【问题描述】:

我希望在绘制时能够设置点大小:

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

你们知道吗?

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

    为此,您可以将regplot() 函数提供给scatter_kws arg,如下所示:

    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})
    

    【讨论】:

    • scatter_kws 是什么意思
    • @GoldenLion:“scatter_kws”表示“散点图关键字参数”。来自文档:“要传递给 plt.scatter 和 plt.plot 的其他关键字参数。”
    • 抖动是由s参数控制的?我希望显示点的聚类
    【解决方案2】:

    您甚至可以动态调整点的大小以表示第三个维度。此代码使用与 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']})
    

    您可能可以想象如何以编程方式操作大小列表/数组,从而为您提供强大的能力来传达额外的信息。

    如果您想将它们分成两组,例如在 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')
    

    【讨论】:

    • 我相信这是最有用的答案
    • 同意@Vivek,这是我正在寻找的更动态的缩放! @mightypile 的后续行动——您知道在按色调在同一个网格上绘制多个方面时如何实现这种动态缩放吗?例如,如果 group 在您的原始数据帧中进行分区,则类似于 sns.regplot(x='x', y='y', data=data, hue = 'group', scatter_kws={'s': data['z']})
    • @El- 我认为您的问题作为一个单独的问题会更好,然后注意到您的单独问题被标记为重复,而没有解决 facetgrid。请参阅对此问题的其他修改。
    【解决方案3】:

    我想在 mburke05 的回答中补充一点,似乎可以将类似数组的数据传递到 scatter_kws. 例如,如果您希望提示数据集中的 size 属性来确定您可以编写的点的大小:

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

    但是,您必须在数据框中显式查找该属性(如上);您不能像设置xy 时那样简单地使用列名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 2020-05-14
      • 1970-01-01
      • 2019-05-28
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      相关资源
      最近更新 更多