我试图创建一个“直方图”,只是不认为y轴是bin中数据点的频率。相反,我希望为每个bin设置自己的y轴值。
例如,假设我的x
值为:[1, 2.2, 1.4, 2, 3.3, 2.6, 3, 1.5, 3.9] and my y-values are [1, 2, 2.5, 1, 0.5, 3, 4, 3, 2]
将此作为函数进行处理:每个x
值都对应于y
值(即x
数组的第一个索引中的值映射到y
数组的第一个索引,第二个索引到第二个,依此类推。)
我希望对x
值进行分箱,并绘制与每个分箱的x值相对应的y
值的总和。
例如,假设我要创建3个垃圾箱。第一个容器将包含x
值1, 1.4, 1.5,
,为此容器绘制的是相应y值的总和(因此1 + 2.5 + 3 = 6.5
)。
我该如何实现?
编辑:我想一个更简单的问题是:如何创建一个以数字作为x轴且连续的条形图(即条形之间没有间隙)的条形图
答案 0 :(得分:0)
我使用了您的示例数据,这是代码
import numpy as np
x = np.array([1, 2.2, 1.4, 2, 3.3, 2.6, 3, 1.5, 3.9])
# sort x and y
ind = np.argsort(x)
x1 = x[ind]
y = np.array([1, 2, 2.5, 1, 0.5, 3, 4, 3, 2])
y1 = y[ind]
# count bins
y2, t = np.histogram(x1, bins=3)
ind1 = y2.cumsum()
ind2 = np.array([0]+[e for e in ind1[0:-1]])
# sum based on counts
y_final = [y1[i:j].sum() for (i, j) in zip(ind2, ind1)]
# plot bar, specify the width
fig, ax = plt.subplots(1, 1, figsize=(7.2, 7.2))
ax.bar(t[0:3], y_final, width=np.diff(t)[0])
答案 1 :(得分:0)