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

如何删除在 seaborn 中顶部有箱线图的直方图中的间距?

如何删除在 seaborn 中顶部有箱线图的直方图中的间距?

摇曳的蔷薇 2023-05-09 16:11:27
我正在遍历一个数据框,并为我数据中的每个数值参数构建一个直方图,顶部有一个箱线图。目的是更好地理解数据集中的所有变量。下面的代码有效,但我的问题是它在直方图中的条形之间打印空格,我希望每个 bin 之间的空格为零。任何建议表示赞赏 - 谢谢!for i in numerical_cols:    f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (.15, .85)})    sns.distplot(raw[i], ax=ax_hist,kde=False)    sns.boxplot(raw[i], ax=ax_box)    ax_box.set(xlabel='')    sns.despine(ax=ax_hist)    sns.despine(ax=ax_box, left=True)    pdf.savefig()plt.close()pdf.close()plt.cla()print(" ")print("Done Writing Frequency Visualizations!")
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

您的数据似乎是离散的,只允许整数值。因此,标准直方图可能会造成混淆,因为它会创建与离散值不对齐的大小相等的分箱。在这种情况下,许多箱子都是空的。(例如,当您有 100 个值时,箱子将获得多个值,但由于四舍五入,某些箱子将获得比其他箱子更多的值。)


应该给出明确的 bin,例如在整数之间的一半处有 bin 边界:


from matplotlib import pyplot as plt

import numpy as np

import seaborn as sns


p = np.random.rand(21) + 0.1

p /= p.sum()

raw_i = np.random.choice(range(21), size=1000000, p=p)

bins = np.arange( -0.5, raw_i.max()+1, 1)

fig, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (.15, .85)})

sns.distplot(raw_i, bins=bins, ax=ax_hist, kde=False)

sns.boxplot(raw_i, ax=ax_box)


ax_box.set(xlabel='')

sns.despine(ax=ax_hist)

sns.despine(ax=ax_box, left=True)

ax_box.set_yticks([])

plt.show()

//img1.sycdn.imooc.com//645a0054000116ae06340473.jpg

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

添加回答

举报

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