python plot简单直方图给出binned数据

Cur*_*ous 26 python plot matplotlib histogram

我有数据(其中100个),每个都对应一个bin(0到99).我需要将这些数据绘制为直方图.但是,直方图会对这些数据进行计数,并且无法正确绘制,因为我的数据已经被分箱.

import random
import matplotlib.pyplot as plt
x = random.sample(range(1000), 100)
xbins = [0, len(x)]
#plt.hist(x, bins=xbins, color = 'blue') 
#Does not make the histogram correct. It counts the occurances of the individual counts. 

plt.plot(x)
#plot works but I need this in histogram format
plt.show()
Run Code Online (Sandbox Code Playgroud)

red*_*rah 36

如果我理解你想要正确实现的目标,那么以下内容应该可以满足您的需求:

import matplotlib.pyplot as plt
plt.bar(range(0,100), x)
plt.show()
Run Code Online (Sandbox Code Playgroud)

它没有使用hist(),但看起来你已经将数据放入垃圾箱,所以没有必要.


jlu*_*nd3 12

问题出在你的xbins上.你现在有

xbins = [0, len(x)]
Run Code Online (Sandbox Code Playgroud)

这将给你列表[0,100].这意味着你只会看到1个bin(而不是2个)以及0以上的100以下.我不完全确定你想要的直方图.如果你想要2个不均匀间隔的垃圾箱,你可以使用

xbins = [0, 100, 1000]
Run Code Online (Sandbox Code Playgroud)

在一个箱子里显示100以下的所有东西,在另一个箱子里显示其他一切.另一种选择是使用整数值来获得一定数量的均匀间隔的箱.换句话说呢

plt.hist(x, bins=50, color='blue')
Run Code Online (Sandbox Code Playgroud)

其中垃圾箱是所需垃圾箱的数量.

另外,每当我不记得如何使用matplotlib做某事时,我通常会转到缩略图库并找到一个或多或少看起来我想要完成的示例.这些示例都附带了源代码,因此它们非常有用.matplotlib 的文档也非常方便.


小智 7

很酷,谢谢!这就是我认为OP想要做的事情:

import random
import matplotlib.pyplot as plt
x=[x/1000 for x in random.sample(range(100000),100)]
xbins=range(0,len(x))
plt.hist(x, bins=xbins, color='blue')
plt.show()
Run Code Online (Sandbox Code Playgroud)