相关疑难解决方法(0)

Seaborn:带有边缘直方图的 kdeplot

我使用kdeplot来绘制两个二元分布的密度,如下所示,其中df_cdf_n是两个 Pandas DataFrame:

f, ax = plt.subplots(figsize=(6, 6))
sns.kdeplot(df_c['attr1'], df_c['attr2'], ax=ax, cmap='Blues', shade_lowest=False)
sns.kdeplot(df_n['attr1'], df_n['attr2'], ax=ax, cmap='Reds',  shade_lowest=False)
Run Code Online (Sandbox Code Playgroud)

我还想包括边际直方图,例如由jointplot生成的边际直方图(示例图)。但是,我无法使用 jointplot (因为显然不可能用 jointplot 绘制两个不同的分布,因为每次调用它时它都会生成一个新的图形),并且我找不到有关如何重现它生成的边际直方图的任何信息。

有没有一种简单的方法可以使用 Seaborn / matplotlib 生成带有边缘直方图的 kdeplot?或者,我是否忽略了使用联合图绘制两个单独分布的方法?

python matplotlib seaborn

4
推荐指数
1
解决办法
1777
查看次数

如何在 kdeplot / displot 中为每个色调组设置不同的线条样式

  • 如何才能给每个hue组的 aseaborn.kdeplotseaborn.displotwithkind='kde'赋予不同的值linestyle
    • 轴级别和图形级别选项都接受strfor linestyle/ls,它适用于所有hue组。
import seaborn as sns
import matplotlib.pyplot as plt

# load sample data
iris = sns.load_dataset("iris")

# convert data to long form
im = iris.melt(id_vars='species')

# axes-level plot works with 1 linestyle
fig = plt.figure(figsize=(6, 5))
p1 = sns.kdeplot(data=im, x='value', hue='variable', fill=True, ls='-.')

# figure-level plot works with 1 linestyle
p2 = sns.displot(kind='kde', data=im, x='value', hue='variable', fill=True, ls='-.')
Run Code Online (Sandbox Code Playgroud)
  • kdeplot

在此输入图像描述

  • displot

在此输入图像描述

已审阅的问题

python matplotlib seaborn displot kdeplot

4
推荐指数
1
解决办法
3215
查看次数

改变seaborn facet网格中的线条样式

我有这样的数据集

import numpy as np; np.random.seed(3)
import pandas as pd
import seaborn.apionly as sns
import matplotlib.pyplot as plt

def get_data(n=266, s=[5,13]):
    val = np.c_[np.random.poisson(lam=s[0], size=n),
                np.random.poisson(lam=s[1], size=n)].T.flatten()
    comp = [s[0]]*n +  [s[1]]*n
    ov = np.random.choice(list("ABC"), size=2*n)
    return pd.DataFrame({"val":val, "overlap":ov, "comp":comp})

data1 = get_data(s=[9,11])
data2 = get_data(s=[9,11])
data3 = get_data(s=[9,11])

#option1 combine
for i, df in enumerate([data1,data2,data3]):
    df["data"] = ["data{}".format(i+1)] * len(df)

data = data1.append(data2)
data = data.append(data3)

bw = 2
a = sns.FacetGrid(data, col="overlap",  hue="comp", row="data")
a = (a.map(sns.kdeplot, "val",bw=bw …
Run Code Online (Sandbox Code Playgroud)

python matplotlib facet seaborn

2
推荐指数
1
解决办法
2379
查看次数

标签 统计

matplotlib ×3

python ×3

seaborn ×3

displot ×1

facet ×1

kdeplot ×1