为了账号安全,请及时绑定邮箱和手机立即绑定

绘制两个直方图。为什么一个人有 kde 而另一个人没有呢?

绘制两个直方图。为什么一个人有 kde 而另一个人没有呢?

翻过高山走不出你 2023-07-27 15:57:21
因此,我正在学习 Kaggle 数据可视化微型课程,并学习了绘制直方图的课程。因此,练习要求绘制两个直方图,我这样做了,它起作用了,但如果我在其中一个图上添加 kde = False,则只有该图可见,而不会显示另一个图:           `sns.distplot(a = cancer_b_data['Area (mean)'], kde = False)              sns.distplot(a = cancer_m_data['Area (mean)'])  `不知道我听起来有多愚蠢,但任何澄清都会有帮助。谢谢
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

默认情况下kde=True,kde 被标准化,使得曲线下的面积为 1。为了在同一图中一起显示,直方图也将被标准化,以便所有条形的总面积之和为一。


使用 时kde=False,默认直方图将显示频率(每个箱的计数),这是更大的数字。如果将两者显示在具有相同轴的同一图中,则归一化直方图不会消失,但会非常小。使用缩放工具,您可以验证它是否仍然存在。要查看两者具有相同的尺寸,sns.distplot(..., kde=False, norm_hist=True)可以使用


您会注意到,两个直方图不使用相同的箱边界。这些边界是使用样本数量以及各个样本集的最小值和最大值来计算的。


要真正比较两个直方图,可以设置显式的 bin,因此两者都使用相同的 bin 边界。


以下代码和图比较了比较直方图的 3 种不同方法:


import matplotlib.pyplot as plt

import numpy as np

import seaborn as sns


x1 = np.random.randn(100).cumsum()

x2 = np.random.randn(100).cumsum()

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(15, 4))


sns.distplot(a=x1, kde=False, ax=ax1)

sns.distplot(a=x2, ax=ax1)

ax1.set_title('one histogram without kde')


sns.distplot(a=x1, kde=False, norm_hist=True, ax=ax2)

sns.distplot(a=x2, ax=ax2)

ax2.set_title('setting norm_hist=True')


xmin = min(x1.min(), x2.min())

xmax = max(x1.max(), x2.max())

bins = np.linspace(xmin, xmax, 11)

sns.distplot(a=x1, kde=False, norm_hist=True, bins=bins, ax=ax3)

sns.distplot(a=x2, bins=bins, ax=ax3)

ax3.set_title('using the same bins')


plt.tight_layout()

plt.show()

//img1.sycdn.imooc.com//64c223a50001c94314780386.jpg

查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信