Matplotlib直方图 - 绘制大于给定值的值

时间:2016-01-20 20:04:25

标签: python numpy matplotlib

我有以下直方图: enter image description here

它是用这段代码制作的:

import matplotlib.pyplot as plt
import numpy as num


treshold_file='false_alarms.txt'
with open(treshold_file, 'r') as f2:
    lines = f2.readlines()
data = [line.split() for line in lines]
data1 = num.array(data)
data2= data1.astype(float)
plt.hist((data2), alpha=0.4,bins=[100,110,120,130,   140,150,160,180,200,250,300,350,400])
plt.xlabel("treshold")
plt.ylabel("Frequency")

我想为每个bin绘制大于或等于给定阈值的值的数量。

对于箱100,我想绘制样本数量> 100,等等。

1 个答案:

答案 0 :(得分:2)

在构建必要的数据后,我会使用手动bar图:

import numpy as np
import matplotlib.pyplot as plt

# dummy data
data2 = np.random.randint(low=0,high=450,size=200)

bins = [100,110,120,130,140,150,160,180,200,250,300,350,400]
binwidths = np.diff(bincenters)
binvals = [np.sum(data2>=thresh) for thresh in bins[:-1]]

plt.figure()
plt.bar(bins[:-1],binvals,width=binwidths,alpha=0.4)
plt.xlabel('threshold')
plt.ylabel('occurences')

结果:

bar plot

数组bins实际上是阈值列表(ndarray)。对于每个阈值,我们计算高于阈值的data2值的数量,这些是条形图的值,称为binvals。我们跳过最后的索引,以便在输出中获得正确的尺寸。