2017-06-22 36 views
1

说我有一个仓边数组和一个仓值数组。 (基本上是plt.hist的输出)。例如:绘制给定仓端点和值的直方图

bins = np.array([1, 2, 3, 4, 5]) 
vals = np.array([2, 5, 5, 2]) 

我该如何绘制直方图?

编辑:为清楚起见,我的意思是丘壑是每个bin,其中LEN(瓦尔斯)+ 1 = LEN(箱)

回答

1

如果您正在使用python 3.5可以使用pyplotfill_between功能的“高度”这样。您可以使用下面的代码:

import numpy as np 
import matplotlib.pyplot as plt 
bins = np.array([1, 2, 3, 4, 5]) 
vals = np.array([2, 5, 5, 2]) 

plt.fill_between(bins,np.concatenate(([0],vals)), step="pre") 
plt.show() 

这将产生如下图: graph with step command

+0

这是不正确的,因为它会产生一个使用'vals'作为输入'x'值的直方图,而不是OP请求的bin bar的实际高度。 – Gabriel

+1

你是对的@加布里埃尔。我错误地理解OP想要从这些值生成直方图。我更新了答案以对应问题的答案。我从另一个答案中添加了一个不同的选项。不幸的是,它只适用于'python 3.5'。 –

0

您可以使用bar情节:

enter image description here

bins = np.array([1, 2, 3, 4, 5]) 
vals = np.array([2, 5, 5, 2]) 
plt.bar((bins[1:] + bins[:-1]) * .5, vals, width=(bins[1] - bins[0])) 
plt.show() 

诀窍是使用您的“边缘”的中点(bins[1:] + bins[:-1]) * .5,并将宽度设置为(bins[1] - bins[0])明白你的整个直方图都有不变的宽度。