gpt4 book ai didi

python - seaborn直方图、countplot和distplot之间的区别

转载 作者:行者123 更新时间:2023-11-28 20:31:35 27 4
gpt4 key购买 nike

我认为它们看起来都一样,但肯定有一些区别。

它们都采用单列作为输入,y 轴包含所有图的计数。

最佳答案

pyplot.histseaborn.countplotseaborn.displot 这些绘图函数都是绘制单个变量频率的辅助工具.根据此变量的性质,它们可能或多或少适合可视化。

连续变量

连续变量 x 可以绘制直方图以显示频率分布。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)*100
hist, edges = np.histogram(x, bins=np.arange(0,101,10))
plt.bar(edges[:-1], hist, align="edge", ec="k", width=np.diff(edges))

plt.show()

enter image description here

同样可以使用 pyplot.histseaborn.distplot 实现,

plt.hist(x, bins=np.arange(0,101,10), ec="k")

sns.distplot(x, bins=np.arange(0,101,10), kde=False, hist_kws=dict(ec="k"))

distplot1. 包装了 pyplot.hist,但除此之外还有一些其他功能,例如显示核密度估计。

离散变量

对于离散变量,直方图可能适合也可能不适合。如果您使用 numpy.histogram,则 bin 需要恰好位于预期的离散观察值之间。

x1 = np.random.randint(1,11,100)

hist, edges = np.histogram(x1, bins=np.arange(1,12)-0.5)
plt.bar(edges[:-1], hist, align="edge", ec="k", width=np.diff(edges))
plt.xticks(np.arange(1,11))

enter image description here

也可以计算 x 中的唯一元素,

u, counts = np.unique(x1, return_counts=True)
plt.bar(u, counts, align="center", ec="k", width=1)
plt.xticks(u)

结果与上面相同。主要区别在于并非所有可能的观察都被占用的情况。假设 5 甚至不是您数据的一部分。直方图方法仍会显示它,但它不是唯一元素的一部分。

x2 = np.random.choice([1,2,3,4,6,7,8,9,10], size=100)

plt.subplot(1,2,1)
plt.title("histogram")
hist, edges = np.histogram(x2, bins=np.arange(1,12)-0.5)
plt.bar(edges[:-1], hist, align="edge", ec="k", width=np.diff(edges))
plt.xticks(np.arange(1,11))

plt.subplot(1,2,2)
plt.title("counts")
u, counts = np.unique(x2, return_counts=True)
plt.bar(u.astype(str), counts, align="center", ec="k", width=1)

enter image description here

后者是 seaborn.countplot 所做的。

sns.countplot(x2, color="C0")

enter image description here

因此它适用于离散或分类变量。

总结

所有函数 pyplot.histseaborn.countplotseaborn.displot 都充当 matplotlib 条形图的包装器,可以在以下情况下使用手动绘制这样的条形图被认为太麻烦了。
对于连续变量,可以使用 pyplot.histseaborn.distplot。对于离散变量,seaborn.countplot 更方便。

1。备注sns.distplot自 seaborn 0.11.2 以来已弃用。对于图形级图,请使用 sns.displot , 对于轴级图,使用 sns.histplot .

关于python - seaborn直方图、countplot和distplot之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304913/

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