我正在尝试使用python学习Matplotlib和绘图,我正在尝试学习如何绘制直方图,但我不知道如何获得条形的高度。 让我们说我想要1,2,3和10,20,30高度的3个柱。我怎么能这样做?
np.hist((1,2,3))
np.hist(((1,10),(2,20),(3,30)))
这些都对吗? 当我输入第一个时,我得到x值,但高度都是1.请帮助
答案 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
如果您真的想要生成具有这些频率计数的直方图,您可以通过在数组中重复import matplotlib.pyplot as plt
plt.bar([1, 2, 3], [10, 20, 30])
十次,1
二十次和2
三十次来自行构建一个:
3
当然,您也可以跳过创建直方图箱和高度并直接使用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