【问题标题】:Overlaying a Scatter plot with a Density (bivariate) using Seaborn使用 Seaborn 覆盖具有密度(二元)的散点图
【发布时间】:2019-07-27 19:37:52
【问题描述】:

正如标题所述,我正在尝试使用 Seaborn 覆盖具有二元密度的散点图。我对这个包很陌生,所以答案可能很明显。这是我当前的代码。 (取自https://elitedatascience.com/python-seaborn-tutorial#

# Density overlayed with Scatter
#Set figure size
plt.figure(figsize=(10,6))

# Plots
sns.kdeplot(df.Attack,
            df.Defense)

sns.lmplot(x='Attack',
          y='Defense',
          hue='Stage',
          data=df,
          fit_reg=False)

plt.title('Density vs Scatter')

我的问题是这些显示为 2 个单独的图。本教程暗示此叠加层应该很简单。

编辑:这是我的结果

Density

Scatter

【问题讨论】:

    标签: python-3.x matplotlib seaborn


    【解决方案1】:

    如果你阅读 seaborn 的 doc,你会看到 sns.lmplot() 结合了 regplot()FacetGridsns.kdeplot() 返回一个 Axes 对象。因此,您可能希望使用图形级函数sns.regplot(),以便可以将两个图放在同一个图形中。代码可以调整如下。

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('Pokemon.csv', encoding='ISO-8859-1')
    
    # plot
    plt.figure(figsize=(10,6))
    sns.relplot(x='Attack', y='Defense', hue='Stage', data=df)
    sns.kdeplot(df.Attack, df.Defense)
    plt.title('Density vs Scatter');
    

    如果您使用 Jupyter 作为 IDE,请确保将 # plot 下的所有代码放在同一单元格中。对于其他 IDE,选择并一起运行代码。否则,它们将显示为两个单独的图。

    【讨论】:

    • 噢噢噢噢。好的,这是有道理的。我认为这是由于情节没有以某种方式正确排列。谢谢。
    • 我收到一个错误“TypeError: regplot() got an unexpected keyword argument 'hue'”
    • 当我将其更改为“颜色”而不是“色调”时,我得到“ValueError: Invalid RGBA argument: 'Stage'”
    • 在 seaborn 的 api 中,hue 并不意味着改变颜色,而是“将产生不同颜色元素的分组变量”。因此,您应该将分类变量传递给它。如果你想改变绘图的颜色,你应该设置palette。我建议你花点时间阅读doc
    • 哦,我明白了。我的 seaborn 库在 jupyter 笔记本中没有正确更新时遇到问题。一旦我重新安装并重新启动它就允许我使用 relplot()。由于混乱,我一直在使用 regplot() 。感谢您与我更深入地交流。
    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 2019-09-26
    • 1970-01-01
    • 2020-12-04
    • 2016-06-04
    • 2019-09-14
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多