使用Matplotlib和Python的直方图高度

时间:2016-05-25 13:26:33

标签: python matplotlib

我正在尝试使用python学习Matplotlib和绘图,我正在尝试学习如何绘制直方图,但我不知道如何获得条形的高度。 让我们说我想要1,2,3和10,20,30高度的3个柱。我怎么能这样做?

np.hist((1,2,3))
np.hist(((1,10),(2,20),(3,30)))

这些都对吗? 当我输入第一个时,我得到x值,但高度都是1.请帮助

2 个答案:

答案 0 :(得分:3)

我猜你正在尝试使用matplotlib.pyplot,你必须使用' hist'第一次测试的功能。

我会退后一步,确保你得到直方图。绘制矢量直方图时,绘制密度概率函数的估计值。如果将矢量(1,2,3)作为' hist'的输入,则矢量表示从随机变量中提取的样本。通过使用此向量作为输入,您可以告诉您已经绘制了三个点,一个值为1,另一个值为2,最后一个值为3,因此得到的图。

答案可能是这样的:

import numpy as np
import matplotlib.pyplot as plt
a = np.concatenate([np.ones(10), 2*np.ones(20), 3*np.ones(30)])
plt.hist(a)

所以在这里,我创建了10个值为1的样本,20个值为2的样本和30个值为3的样本,然后我将它们放在一个单独的向量中(通过连接)。

我希望它有所帮助。

答案 1 :(得分:2)

我假设您的意思是numpy.histogram()函数,它旨在为您分配实值数字并从中生成频率分档。您为函数提供了一个包含三个值的列表,因此这些值的频率都是1 - 也就是说,只有一个1,一个2和一个{{1}在你传递的数组中。

通过制作简单的条形图,您可以更轻松地完成所描述的内容。你知道你想要的x值(1,2和3),你知道你想要的每个箱子的高度(10,20,30),那么为什么不做以下呢?

3

simple pyplot bar chart

如果您真的想要生成具有这些频率计数的直方图,您可以通过在数组中重复import matplotlib.pyplot as plt plt.bar([1, 2, 3], [10, 20, 30]) 十次,1二十次和2三十次来自行构建一个:

3

pyplot bar chart from histogram output

当然,您也可以跳过创建直方图箱和高度并直接使用import matplotlib.pyplot as plt import numpy as np data = [1] * 10 + [2] * 20 + [3] * 30 heights, bins = np.histogram(data, bins=[1, 2, 3, 4]) plt.bar(bins[0:3], heights)

matplotlib.pyplot.hist

histogram created directly using pyplot