拟合分布在创建多个图时被剪切

2024-05-16 04:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制出版物正态分布的3个数字,但我只得到一个好数字(英国)。其余两个(美国和日本)的正态曲线不完整

我把曲线拟合成直方图,这样你就可以说每个图需要包含两个图,即直方图和高斯分布

请看一下我的代码的一部分,让我知道如何解决这个问题。 我很乐意接受建议,谢谢

我的Matplotlib图:fitted distributionfitted distributionfitted distribution

for item in totalIPs:
    USA=totalIPs[18]
    JAPAN=totalIPs[10]
    UK=totalIPs[17]
    AUSTRALIA=totalIPs[0]

#print(USA)
#print(JAPAN)
#print(UK)
#print(AUSTRALIA)
#print('done')

#print(country)
#print(ipFirmnames)
#print(totalIPs)
#print("done")       

#Calculating mean and standard deviation
#from sublists in country list of lists
#i could write a function for this but dont know how

mu_USA=statistics.mean(USA)
mu_JAPAN=statistics.mean(JAPAN)
mu_UK=statistics.mean(UK)

std_USA=statistics.stdev(USA)
std_JAPAN=statistics.stdev(JAPAN)
std_UK=statistics.stdev(UK)

plt.figure(1)
plt.hist(USA, bins=10, normed=True, alpha=0.6, color='g')

plt.figure(2)
plt.hist(JAPAN,bins=10,normed=True,alpha=0.6, color ='g')

plt.figure(3)
plt.hist(UK, bins=10,normed=True, alpha=0.6, color = 'g')

standardize_USA=(np.array(USA)-mu_USA)/std_USA
standardize_JAPAN=(np.array(JAPAN)-mu_JAPAN)/std_JAPAN
standardize_UK=(np.array(UK)-mu_UK)/std_UK

xmin, xmax = plt.xlim()

x1=np.linspace(xmin, xmax, 100)
x2=np.linspace(xmin, xmax, 100)
x3=np.linspace(xmin, xmax, 100)

fitted_pdf_USA=ss.norm.pdf(x1,mu_USA, std_USA)
fitted_pdf_JAPAN=ss.norm.pdf(x3,mu_JAPAN, std_JAPAN)
fitted_pdf_UK=ss.norm.pdf(x3,mu_UK, std_UK)

plt.figure(1)
plt.plot(x1, fitted_pdf_USA, 'K', linewidth=2)

plt.figure(2)
plt.plot(x2, fitted_pdf_JAPAN,'K', linewidth=2)
fitted_pdf_JAPAN=ss.norm.pdf(x2,mu_JAPAN, std_JAPAN)


plt.figure(3)
plt.plot(x3, fitted_pdf_UK,'K', linewidth=2)

#plt.show()
print(standardize_USA)
print(standardize_JAPAN)

#print(USA)
print(UK)
print(JAPAN)

Tags: pdfnppltmeanfigurestdprintstatistics
1条回答
网友
1楼 · 发布于 2024-05-16 04:19:06

您遇到的问题是,曲线的限制仅从零件中的一条曲线获得

xmin, xmax = plt.xlim()

根据每个图各自的数据对每个图进行单独的限制,而不是图形限制,这样可以解决您的问题。使用numpy中的max()min()

x1=np.linspace(USA.min(),USA.max(),100)

对每一个绘图都使用其各自的数据。这样可以得到平滑的曲线,但限制不是图形,而是数据。如果它太小,只需通过乘法(如1.1*max())或求和(max()+10)来增加极限min取决于数据)

相关问题 更多 >