gpt4 book ai didi

python - Seaborn:带有边缘直方图的 kdeplots

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:26 27 4
gpt4 key购买 nike

我正在使用 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)

我还想包括边际直方图,如 jointplot 生成的那些(example plot)。但是,我不能使用 jointplot(因为显然不可能用 jointplot 绘制两个不同的分布,因为每次调用它都会生成一个新的 Figure),而且我找不到任何关于如何重现它生成的边际直方图的信息.

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

最佳答案

您可以使用 seaborn.JointGrid . key ,正如 seaborn 的作者在 this Github issue 中所解释的那样, 就是用

"three component axes at attributes called ax_joint, ax_marg_x, and ax_marg_y".

希望以下示例是您想要的:

import matplotlib.pyplot as plt
import seaborn as sns

iris = sns.load_dataset("iris")
setosa = iris.loc[iris.species == "setosa"]
virginica = iris.loc[iris.species == "virginica"]

g = sns.JointGrid(x="sepal_width", y="petal_length", data=iris)
sns.kdeplot(setosa.sepal_width, setosa.sepal_length, cmap="Reds",
shade=True, shade_lowest=False, ax=g.ax_joint)
sns.kdeplot(virginica.sepal_width, virginica.sepal_length, cmap="Blues",
shade=True, shade_lowest=False, ax=g.ax_joint)
sns.distplot(setosa.sepal_width, kde=False, color="r", ax=g.ax_marg_x)
sns.distplot(virginica.sepal_width, kde=False, color="b", ax=g.ax_marg_x)
sns.distplot(setosa.sepal_length, kde=False, color="r", ax=g.ax_marg_y, vertical=True)
sns.distplot(virginica.sepal_length, kde=False, color="b", ax=g.ax_marg_y, vertical=True)
plt.show()

enter image description here

关于python - Seaborn:带有边缘直方图的 kdeplots,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49654812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com