有什么方法可以获取sns.distplot中每个bin的计数吗?例如,
sns.distplot(df.intervalL, kde=False, bins=[0,25,50,75,100], color='navy',rug=False, norm_hist=False)
我想获取每个垃圾箱中的计数。 谢谢
答案 0 :(得分:0)
sns.distplot
返回在其上创建绘图的ax
。这些条形图可以在ax.containers[0]
中作为矩形进行访问,您可以对其进行调查。
请注意,在Seaborn 0.11中,sns.distplot
已替换为sns.histplot
。 (下面的代码仍可与sns.distplot
一起使用,显示警告该功能已被弃用。)
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
data = np.random.randn(100, 10).cumsum(axis=1).ravel()
data -= data.min()
data *= 100 / data.max()
bins = [0,25,50,75,100]
ax = sns.histplot(data, kde=False, bins=bins, color='navy')
for bar, b0, b1 in zip(ax.containers[0], bins[:-1], bins[1:]):
print(f'{b0:3d} - {b1:3d}: {bar.get_height():4.0f}')
输出:
0 - 25: 57
25 - 50: 513
50 - 75: 382
75 - 100: 48
如果只需要没有绘图的值,也可以只调用counts, _ = np.histogram(data, bins=bins)
(docs)。