栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在每个带/ bin中以数据百分比作为标签绘制正态分布?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在每个带/ bin中以数据百分比作为标签绘制正态分布?

尽管我已经标记了四分位数之间的百分比,但是这部分代码对于标准偏差的执行可能会有所帮助。

import numpy as npimport scipyimport pandas as pdfrom scipy.stats import normimport matplotlib.pyplot as pltfrom matplotlib.mlab import normpdf# dummy datamu = 0sigma = 1n_bins = 50s = np.random.normal(mu, sigma, 1000)fig, axes = plt.subplots(nrows=2, ncols=1, sharex=True)#histogramn, bins, patches = axes[1].hist(s, n_bins, normed=True, alpha=.1, edgecolor='black' )pdf = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(bins-mu)**2/(2*sigma**2))median, q1, q3 = np.percentile(s, 50), np.percentile(s, 25), np.percentile(s, 75)print(q1, median, q3)#probability density functionaxes[1].plot(bins, pdf, color='orange', alpha=.6)#to ensure pdf and bins line up to use fill_between.bins_1 = bins[(bins >= q1-1.5*(q3-q1)) & (bins <= q1)] # to ensure fill starts from Q1-1.5*IQRbins_2 = bins[(bins <= q3+1.5*(q3-q1)) & (bins >= q3)]pdf_1 = pdf[:int(len(pdf)/2)]pdf_2 = pdf[int(len(pdf)/2):]pdf_1 = pdf_1[(pdf_1 >= norm(mu,sigma).pdf(q1-1.5*(q3-q1))) & (pdf_1 <= norm(mu,sigma).pdf(q1))]pdf_2 = pdf_2[(pdf_2 >= norm(mu,sigma).pdf(q3+1.5*(q3-q1))) & (pdf_2 <= norm(mu,sigma).pdf(q3))]#fill from Q1-1.5*IQR to Q1 and Q3 to Q3+1.5*IQRaxes[1].fill_between(bins_1, pdf_1, 0, alpha=.6, color='orange')axes[1].fill_between(bins_2, pdf_2, 0, alpha=.6, color='orange')print(norm(mu, sigma).cdf(median))print(norm(mu, sigma).pdf(median))#add text to bottom graph.axes[1].annotate("{:.1f}%".format(100*norm(mu, sigma).cdf(q1)), xy=((q1-1.5*(q3-q1)+q1)/2, 0), ha='center')axes[1].annotate("{:.1f}%".format(100*(norm(mu, sigma).cdf(q3)-norm(mu, sigma).cdf(q1))), xy=(median, 0), ha='center')axes[1].annotate("{:.1f}%".format(100*(norm(mu, sigma).cdf(q3+1.5*(q3-q1)-q3)-norm(mu, sigma).cdf(q3))), xy=((q3+1.5*(q3-q1)+q3)/2, 0), ha='center')axes[1].annotate('q1', xy=(q1, norm(mu, sigma).pdf(q1)), ha='center')axes[1].annotate('q3', xy=(q3, norm(mu, sigma).pdf(q3)), ha='center')axes[1].set_ylabel('probability')#top boxplotaxes[0].boxplot(s, 0, 'gD', vert=False)axes[0].axvline(median, color='orange', alpha=.6, linewidth=.5)axes[0].axis('off')plt.subplots_adjust(hspace=0)plt.show()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号