如何使用标记将直方图转换为简单图?

时间:2019-07-04 09:57:45

标签: python matplotlib

我已经绘制了一个直方图。但是我想使用它的数据来绘制一个简单的图形,使用标记显示数据点。但是为此,我需要在x轴和y轴上的值。对于y轴,我可以在以下代码中使用n,但是x轴的值是多少?我不能选择bins作为x轴,因为它会返回bin边缘。

`x= np.array([0,0,0,0,0,1,1,1,2,2,1,5,5,4,4.3,10])  
n,bins,patches=plt.hist(x,bins=5,density=True)
print("n is: ",n)
plt.xlim([0,6])
plt.xlabel('s')
plt.ylabel('P(s)')`
#Result
#n is:  [0.28125, 0.0625, 0.125, 0.,0.03125]

#Simple graph:
#plt.plot(?,n,marker='.')

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

您是否正在寻找类似的东西?

x= np.array([0,0,0,0,0,1,1,1,2,2,1,5,5,4,4.3,10])
n,bins,patches=plt.hist(x,bins=5,density=True, alpha=0.6)

plt.xlabel('s')
plt.ylabel('P(s)')
plt.scatter(bins[:-1]+ 0.5*(bins[1:] - bins[:-1]), n, marker='o', c='red', s=40, alpha=1)


enter image description here

答案 1 :(得分:0)

我将range(len(n))用作x轴

 plt.plot(range(len(n)), n, marker='.')

但没有x轴值也可以得到相同的结果

 plt.plot(n, marker='.')

import matplotlib.pyplot as plt
import numpy as np

x= np.array([0,0,0,0,0,1,1,1,2,2,1,5,5,4,4.3,10])  
n,bins,patches=plt.hist(x,bins=5,density=True)
plt.show()
print("n is: ",n)
plt.xlim([0,6])
plt.xlabel('s')
plt.ylabel('P(s)')
#Result
#n is:  [0.28125, 0.0625, 0.125, 0.,0.03125]

#Simple graph:
plt.plot(range(len(n)), n, marker='.')
plt.show()

plt.plot(n, marker='.')
plt.show()

编辑:您还可以使用bins计算x-axis

import matplotlib.pyplot as plt
import numpy as np

x = np.array([0,0,0,0,0,1,1,1,2,2,1,5,5,4,4.3,10])  
n, bins, patches=plt.hist(x,bins=5,density=True)
plt.show()

#Simple graph:
#X = [(a+b)/2 for a,b in zip(bins, bins[1:])]
X = (bins[:-1] + bins[1:])/2
Y = n
plt.plot(X, Y, marker='.')
plt.show()

enter image description here