matplotlib画直方图细解
一、总结
一句话总结:
n1, bins1, patches1 = plt.hist(x1, bins=50, density=True, color=’g’, alpha=1)
1、n1, bins1, patches1 = plt.hist(x1, bins=50, density=True, color=’g’, alpha=1) 返回值?
n:直方图的值(比如1-2有几个,2-3有几个);
bins:返回各个bin的区间范围;
patches:返回每个bin的信息
2、n1, bins1, patches1 = plt.hist(x1, bins=50, density=True, color=’g’, alpha=1) 常用参数?
bins表示直方图条条个数
alpha:透明度;color:颜色;
density:是密度而不是具体数值
3、直方图如何添加分布曲线?
n1, bins1, patches1 = plt.hist(x1, bins=50, density=True, color=’g’, alpha=1)
plt.plot(bins1[:-1],n1,’–‘),因为bins里面多一个,bins里面是直方图条件的x,n1里面是对应的每个条条里的数有多少个
4、多类型直方图?
x1,x2,x3 = [np.random.randn(n) for n in [10000, 5000, 2000]] # 生成3组值,每组的个数可以不一样
plt.hist([x1, x2, x3], bins=10, density=True, histtype=’bar’) # 在 ax.hist 函数中先指定图例 label 名称
二、matplotlib可视化直方图
转自或参考:matplotlib可视化直方图
https://www.cnblogs.com/lfri/p/12251387.html
plt.hist()
用于画直方图。
参数列表:
plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None)
x:指定要绘制直方图的数据;输入值,这需要一个数组或者一个序列,不需要长度相同的数组。
bins:指定直方图条形的个数;
range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;
density:布尔,可选。如果”True”,返回元组的第一个元素将会将计数标准化以形成一个概率密度,也就是说,直方图下的面积(或积分)总和为1。这是通过将计数除以数字的数量来实现的观察乘以箱子的宽度而不是除以总数数量的观察。如果叠加也是“真实”的,那么柱状图被规范化为1。(替代normed)
weights:该参数可为每一个数据点设置权重;
cumulative:是否需要计算累计频数或频率;
bottom:可以为直方图的每个条形添加基准线,默认为0;
histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;
align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;
orientation:设置直方图的摆放方向,默认为垂直方向;
rwidth:设置直方图条形宽度的百分比;
log:是否需要对绘图数据进行log变换;
color:设置直方图的填充色;
label:设置直方图的标签,可通过legend展示其图例;
stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;
normed:是否将直方图的频数转换成频率;(弃用,被density替代)
alpha:透明度,浮点数。
返回值:
n:直方图的值
bins:返回各个bin的区间范围
patches:返回每个bin的信息
import numpy as np import matplotlib.pyplot as plt np.random.seed(19260801) mu1, sigma1 = 100, 15 mu2, sigma2 = 80, 15 x1 = np.random.normal(mu1,sigma1,10000) # (均值,标准差,个数) x2 = np.random.normal(mu2,sigma2,10000) # the histogram of the data # 50:将数据分成50组 # color:颜色;alpha:透明度 # density:是密度而不是具体数值 n1, bins1, patches1 = plt.hist(x1, bins=50, density=True, color='g', alpha=1) n2, bins2, patches2 = plt.hist(x2, bins=50, density=True, color='r', alpha=0.2) plt.show()
添加分布曲线
根据plt.hist()返回值,很容易画出分布曲线
#print(len(bins1)) #51 #print(len(n1)) #50 plt.plot(bins1[:-1],n1,'--') plt.plot(bins2[:-1],n2,'--')
多类型直方图
import numpy as np import matplotlib.pyplot as plt # 生成3组值,每组的个数可以不一样 x1,x2,x3 = [np.random.randn(n) for n in [10000, 5000, 2000]] plt.figure(figsize=(8,5)) # 在 ax.hist 函数中先指定图例 label 名称 plt.hist([x1, x2, x3], bins=10, density=True, histtype='bar') # 通过 ax.legend 函数来添加图例 plt.legend(list("ABC")) plt.show()
添加说明信息
添加title
你可以给图示或图添加标题。但是默认不支持中文,需要自己添加中文字体。
windows的字体文件放在 C:WindowsFonts
,通过fontproperties设置字体,fontsize设置字体大小.
import matplotlib songTi = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc') plt.title("多类型直方图",fontproperties=songTi,fontsize=12)
添加文字、网格、轴标签及轴范围
import numpy as np import matplotlib.pyplot as plt # Fixing random state for reproducibility np.random.seed(19680801) mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) # the histogram of the data n, bins, patches = plt.hist(x, 50, density=True, facecolor='g', alpha=0.75) plt.xlabel('Smarts') plt.ylabel('Probability') plt.title('Histogram of IQ') plt.text(60, .025, r'$mu=100, sigma=15$') #(x,y,str,...) plt.xlim(40, 160) plt.ylim(0, 0.03) plt.grid(True) plt.show()
参考链接:
3. matplotlib.pyplot.text官方文档及示例
4. CSDN-Watch_dou-matplotlib之hist详解
我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站:
fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
博主25岁,前端后端算法大数据人工智能都有兴趣。
大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
聊技术,交朋友,修心境,qq404006308,微信fan404006308
26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
人工智能群:939687837
作者相关推荐
#fry_added_part .inspiration_content{
//max-height: 120px;
overflow: auto;
margin: 20px 0;
}
#fry_added_part .fry_inspiration .simple a{
margin-right: 25px;
}
感悟总结
其它重要感悟总结