【1】引言
前述已经对hist()函数有相对深度的探索,但还没有彻底,今天继续探索。
前述文章可通过下述链接直达:
【2】官网教程
在官网的教程中,提供了一种直方图多子图绘制方法,相关链接为:
Histogram bins, density, and weight — Matplotlib 3.9.2 documentation
在这里,我们看到用不同形式对自变量进行频次密度进行直方图表达。
【3】代码解读
主要研究下述代码:
fig, ax = plt.subplot_mosaic([['auto', 'n4']],
sharex=True, sharey=True, layout='constrained')ax['auto'].hist(xdata, **style)
ax['auto'].plot(xdata, 0*xdata, 'd')
ax['auto'].set_ylabel('Number per bin')
ax['auto'].set_xlabel('x bins (auto)')ax['n4'].hist(xdata, bins=4, **style)
ax['n4'].plot(xdata, 0*xdata, 'd')
ax['n4'].set_xlabel('x bins ("bins=4")')
首先,第一行代码调用subplot_mosaic()函数,按照左右分列的形式,规定了两个字符['auto', 'n4']。
plt.subplot_mosaic([['auto', 'n4']],
sharex=True, sharey=True, layout='constrained')
如果对第一行代码规定子图是左右分列形式有些不懂,可以通过下述文章解读疑惑:
python画图|灵活的subplot_mosaic()函数-初逢-CSDN博客
然后后面的部分就非常简单,直接调用subplot_mosaic()函数内的字符作为ax[]函数画图的位置依据,分别绘制hist()函数直方图和plot()函数曲线图。
运行代码后绘制的图形为:
图1
此时的完整代码为:
import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块
rng = np.random.default_rng(19680801) #定义数据发生器,方便定义array数组
xdata = np.array([1.2, 2.3, 3.3, 3.1, 1.7, 3.4, 2.1, 1.25, 1.3,2.3,2.6,2.8]) #定义自变量
xbins = np.array([1, 2, 3, 5]) #定义画图区间
#xdata=np.linspace(1,5,1000)
# changing the style of the histogram bars just to make it
# very clear where the boundaries of the bins are:
style = {'facecolor': 'none', 'edgecolor': 'C0', 'linewidth': 3} #定义画图风格,
fig, ax = plt.subplot_mosaic([['auto', 'n4']], #调用subplot_mosaic()函数,按照左右分列的形式,规定了两个字符
sharex=True, sharey=True, layout='constrained') #共享坐标轴
ax['auto'].hist(xdata, **style) #画左边的图形,用hist()直方图的形式
ax['auto'].plot(xdata, 0*xdata, 'd') #画左边的图形,用plot()曲线的形式
ax['auto'].set_ylabel('Number per bin') #设置Y轴标签
ax['auto'].set_xlabel('x bins (auto)') #设置X轴标签
ax['n4'].hist(xdata, bins=4, **style) #画右边的图形,用hist()直方图的形式
ax['n4'].plot(xdata, 0*xdata, 'd') #画右边的图形,用plot()曲线的形式
ax['n4'].set_xlabel('x bins ("bins=4")') #设置X轴标签
plt.show() #输出图形
这里需要说明的是:
ax['auto'].hist(xdata, **style)代码段没有给出bins参数,也就是要画几个方格的说明,所以图形实际上按照“自动的形式”绘制了多个方格;
而ax['n4'].hist(xdata, bins=4, **style)明确指出了bins=4,图形按照预定的形式画出了4个方格。
【4】代码修改
接下来,如果我们想按照上下分列的显示输出图形,那就改下subplot_mosaic()函数代码:
fig, ax = plt.subplot_mosaic([['auto'],
['n4']], #调用subplot_mosaic()函数,按照上下分列的形式,规定了两个字符
sharex=True, sharey=True, layout='constrained') #共享坐标轴
此时运行代码的输出图像为:
图2
【5】总结
掌握了自动和按照计划输出直方图方格数量的操作技能。
标签:puthon,auto,画图,hist,xdata,ax,n4,bins From: https://blog.csdn.net/weixin_44855046/article/details/143682320