我已经绘制了一个直方图。但是我想使用它的数据来绘制一个简单的图形,使用标记显示数据点。但是为此,我需要在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='.')
答案 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)
答案 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()