Sam*_*mer 133 python matplotlib histogram
我正在使用matplotlib来制作直方图.
基本上,我想知道是否有任何方法可以手动设置垃圾箱的大小而不是垃圾箱的数量.
任何有任何想法的人都非常感谢.
谢谢
Cod*_*Cat 237
实际上,它很容易:您可以使用bin边界列出bin,而不是bin的数量.它们也可能分布不均:
plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100])
Run Code Online (Sandbox Code Playgroud)
如果您只是希望它们均匀分布,您只需使用范围:
plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth))
Run Code Online (Sandbox Code Playgroud)
添加到原始答案
上面的行只适用于data填充整数.正如macrocosme指出的那样,对于花车你可以使用:
import numpy as np
plt.hist(data, bins=np.arange(min(data), max(data) + binwidth, binwidth))
Run Code Online (Sandbox Code Playgroud)
小智 13
对于N个区间,区间边缘由N + 1个值的列表指定,其中前N个给出下边框边缘而+1给出最后一个边框的上边缘.
码:
from numpy import np; from pylab import *
bin_size = 0.1; min_edge = 0; max_edge = 2.5
N = (max_edge-min_edge)/bin_size; Nplus1 = N + 1
bin_list = np.linspace(min_edge, max_edge, Nplus1)
Run Code Online (Sandbox Code Playgroud)
请注意,linspace产生的数组从min_edge到max_edge分为N + 1个值或N个bin
我使用分位数来做 bins 统一并适合样本:
bins=df['Generosity'].quantile([0,.05,0.1,0.15,0.20,0.25,0.3,0.35,0.40,0.45,0.5,0.55,0.6,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1]).to_list()
plt.hist(df['Generosity'], bins=bins, normed=True, alpha=0.5, histtype='stepfilled', color='steelblue', edgecolor='none')
Run Code Online (Sandbox Code Playgroud)
我想最简单的方法是计算您拥有的数据的最小值和最大值,然后计算L = max - min. 然后除以L所需的 bin 宽度(我假设这就是 bin 大小的意思)并使用该值的上限作为 bin 的数量。