我编写了{3}的Python 3代码,以帮助我自动分析使用称为量热法(用于辐射剂量测定法)的技术生成的数据。在随附的示例中,输入文件的分析返回了第八个“加热区域”(顶部面板),并且在每个区域中对数据部分进行了一对线性回归(黑色部分,红色部分)以计算数据的大小。 'step',相对于我感兴趣的数量的平均值( thermistor 的变化电阻),它绘制在同一图的下面板中。< / p>
此类分析的结果总结在数据框架中(目前来自 numpy 的 ndarray ),但理想情况下,我希望也能生成图形表示每个子图中都有一些注释,包括结果数据框中相应行的信息:
一般输出看起来像最后一个数字,每个子图包含来自前一个单独图的相同基本信息。
Step analysis via a pair of linear regressions and further computation
在Jupyter笔记本中使用这部分代码,手动创建,无需任何迭代:
%matplotlib inline
results_fig = pyplt.figure(figsize=(20,10))
results_grid = matplotlib.gridspec.GridSpec(2, 4, hspace=0.2, wspace=0.3)
results_fig.suptitle("Faceted presentation of calorimetric runs", fontsize=15)
ax1 = results_fig.add_subplot(results_grid[0,0])
ax1.scatter(time,resistance, marker ='o', s=20, c='blue')
ax1.plot(time[x1[0]:xmid[0]], line_pre[0], color='black', linewidth=3.0)
ax1.plot(time[xmid[0]:x4[0]], line_post[0], color='red', linewidth=3.0)
ax1.set_xlim(xlim1[0],xlim2[0])
ax1.set_ylabel("resistance [Ohm]")
# [... continues for each subplot in the grid ... ]
鉴于“加热区域”的数量可能因文件而异,即在分析每个实验输出数据文件之前无法确定,这里是我的一对问题:
由于
答案 0 :(得分:0)
以下是如何创建n x 4个子图的网格并迭代它们
numplots = 10 # number of plots to create
m = 4 # number of columns
n = int(np.ceil(numplots/4.)) # number of rows
fig, axes = plt.subplots(nrows=n,ncols=m)
fig.subplots_adjust(hspace=0.2, wspace=0.3)
for data, ax in zip(alldata, axes.flatten()):
ax.plot(data[0],data[1], color='black')
# further plotting, label setting etc.
# optionally, remove empty plots from grid
if n*m > numplots:
for ax in axes.flatten()[numplots:]:
ax.remove()
##or
#ax.set_visible(False)