gpt4 book ai didi

python - 如何为联合网格中的每个 kdeplot 设置线条样式

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:10 49 4
gpt4 key购买 nike

我正在使用 seaborn 创建一个边缘分布的 kdeplot,如 this answer 中所述。 .我稍微调整了代码,得到了这个:

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=False, shade_lowest=False, ax=g.ax_joint)
sns.kdeplot(virginica.sepal_width, virginica.sepal_length, cmap="Blues",
shade=False, shade_lowest=False, ax=g.ax_joint)
sns.distplot(setosa.sepal_width, kde=True, hist=False, color="r", ax=g.ax_marg_x)
sns.distplot(virginica.sepal_width, kde=True, hist=False, color="b", ax=g.ax_marg_x)
sns.distplot(setosa.sepal_length, kde=True, hist=False, color="r", ax=g.ax_marg_y, vertical=True)
sns.distplot(virginica.sepal_length, kde=True, hist=False, color="b", ax=g.ax_marg_y, vertical=True)
plt.show()

enter image description here

黑白打印是不可能的。 如何让 seaborn 以特定样式(虚线/虚线/...)打印 kdeplot 和 distplot 线,以便在黑白打印时区分它们?

related questions处理似乎支持这一点的其他类型的图,但这似乎不受 kdeplot 支持和 distplot .

最佳答案

边距

要使用不同的线型显示 kde 绘图的线条,您可以使用 linestyle 参数,该参数会传递给 matplotlib 的绘图函数。

sns.kdeplot(setosa.sepal_width, color="r", ax=g.ax_marg_x, linestyle="--")

要为通过 distplot 生成的 kde 图提供此参数,您可以使用 kde_kws 参数。

sns.distplot(..., kde_kws={"linestyle":"--"})

但是,似乎没有任何理由在这里使用 distplot。

联合KDE

对于 2D 情况,linestyle 参数无效。二维 kdeplot 是一个 contour 图。因此,您需要使用 contourlinestyles(而不是 s)参数。

sns.kdeplot(, linestyles="--")

完整代码

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=False, shade_lowest=False, ax=g.ax_joint, linestyles="--")
sns.kdeplot(virginica.sepal_width, virginica.sepal_length, cmap="Blues",
shade=False, shade_lowest=False, ax=g.ax_joint, linestyles=":")

sns.kdeplot(setosa.sepal_width, color="r", legend=False,
ax=g.ax_marg_x, linestyle="--")
sns.kdeplot(virginica.sepal_width, color="b", legend=False,
ax=g.ax_marg_x, linestyle=":")
sns.kdeplot(setosa.sepal_length, color="r", legend=False,
ax=g.ax_marg_y, vertical=True, linestyle="--")
sns.kdeplot(virginica.sepal_length, color="b", legend=False,
ax=g.ax_marg_y, vertical=True, linestyle=":")
plt.show()

enter image description here

关于python - 如何为联合网格中的每个 kdeplot 设置线条样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49671053/

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