微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

displot 的图例和归一化

如何解决displot 的图例和归一化

我正在尝试制作一个显示多条曲线的密度图。我正在使用 seaborn 模块中的 displot,如下所示,而不是 distplot,因为我收到警告(在 Pycharm 中),后者将在未来被删除。不过,我找不到如何更改此图中的标签。现在它们只是被列为“0”和“1”。另外,我想对两条曲线进行归一化,以便更好地比较它们。 common_norm=True 似乎不起作用。有谁知道我可以使用什么论点?有一个叫做“legend”,但它是一个布尔值。我查看了关于 distplot 图例的 one other post,但它对我不起作用。

一个简短的工作示例:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

mylist = [np.random.normal(loc=0.0,scale=1.0,size=None) for i in range(50)]
yourlist = [np.random.normal(loc=1.0,scale=3,size=None) for j in range(50)]
sns.displot([mylist,yourlist],kind="kde",common_norm=True,color=["blue","red"],linewidth=1)
plt.show()

density plots

解决方法

这是一个修订版,应该能给出你所期待的情节

sns.displot(
    {"a": mylist,"b": yourlist},# Use a dict to assign labels to each curve
    kind="kde",common_norm=False,# Normalize each distribution independently
    palette=["blue","red"],# Use palette for multiple colors
    linewidth=1
)

我认为唯一需要更多解释的变化是common_norm。密度由曲线下的面积归一化(它应该等于 1)。如果 common_norm=True,则所有曲线下的面积总和等于 1;如果 common_norm_False,则每条曲线下的面积等于 1。我认为您期望通过最大值进行归一化,但这并不是真正可以解释的。 common_norm 参数在此处没有明显影响,因为您在每组中具有相同数量的观察值,因此它会更改 y 轴标签,但不会更改曲线的相对比例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。