【问题标题】:Plot with density using Seaborn使用 Seaborn 绘制密度图
【发布时间】:2021-06-21 23:48:30
【问题描述】:

我有一个有两个特征的数据集,我用Seaborn.relplot根据另一个来绘制它们,得到了这样的结果:

但我想使用 Seaborn 添加点密度,我们可以在 this discussionthis one 中观察到,请参见下图。

我如何使用 Seaborn 做到这一点?

【问题讨论】:

  • 您可以直接使用第二个链接中的方法sns.scatterplot。另一种选择是覆盖双变量 kde 图as in this example
  • 谢谢,但他们不使用 seaborn,只使用 matplotlib。
  • Seaborn 构建在 matplotlib 之上,因此您可以将 matplotlib 技术用于 seaborn 生成的绘图。
  • 谢谢。实际上。我想知道是否有内置功能可以做到这一点。
  • 据我所知,您需要将值提供给 huec 参数作为您的颜色值(来自 gaussian_kde)以及您要使用的颜色图。这内置的方式来做到这一点。

标签: python matplotlib seaborn


【解决方案1】:

与您的 second link 一样,但使用 sns.scatterplot 代替:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats

tips = sns.load_dataset("tips")

values = np.vstack([tips["total_bill"], tips["tip"]])
kernel = stats.gaussian_kde(values)(values)
fig, ax = plt.subplots(figsize=(6, 6))
sns.scatterplot(
    data=tips,
    x="total_bill",
    y="tip",
    c=kernel,
    cmap="viridis",
    ax=ax,
)

或者,覆盖sns.kdeplot

fig, ax = plt.subplots(figsize=(6, 6))
sns.scatterplot(
    data=tips,
    x="total_bill",
    y="tip",
    color="k",
    ax=ax,
)
sns.kdeplot(
    data=tips,
    x="total_bill",
    y="tip",
    levels=5,
    fill=True,
    alpha=0.6,
    cut=2,
    ax=ax,
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2016-11-09
    • 2017-01-07
    相关资源
    最近更新 更多