Я создаю несколько вспомогательных участков из информационного кадра, содержащего результаты реакции (по 70 в каждом информационном кадре), и я хочу нанести на график реакции 12 на 12, чтобы быстро просмотреть их перед тем, как приступить к более тщательному анализу. Поскольку 70/12 оставляет остаток, простая реализация вышла бы за пределы. Я могу решить это, используя выражение «если, еще», но оно не очень элегантно и не эффективно. Я хотел бы знать, был ли более хороший вариант.
Размер warDf - 70, имеется в виду размер 130x70. время, pcmean и ncmean имеют размер 130. Я использую библиотеки pandas (pd), numpy (np) и matplotlib.pyplot (plt),
it=int(np.ceil(np.size(warDf)/12))# defining what to loop over
kk=0
for kk in np.arange(0,it):
#declaring the subplots
fig,axes=plt.subplots(nrows=3,ncols=4,sharex='col',sharey='row')
#transforming axes in a usable list
axe_list=[item for sublist in axes for item in sublist]
# checking that I don't run out of bond
if (12*kk+12<np.size(warDf)):
k=0
# plotting each graph in its corresponding subplot
for k in np.arange(0,12):
ax=axe_list.pop(0)
ax.plot(time,meanDf.iloc[:,12*kk+k],label=(meanDf.columns[12*kk+k]),color='blue')
ax.plot(time,pcmean,color='green')
ax.plot(time,ncmean,color='red')
ax.set_ylabel('fluorescence')
ax.set_xlabel('time/ (s)')
ax.legend()
else: # better option??
k=0
s2=np.size(warDf)-12*kk
for k in np.arange(0,s2):
ax=axe_list.pop(0)
ax.plot(time,meanDf.iloc[:,12*kk+k],label=(meanDf.columns[12*kk+k]),color='blue')
ax.plot(time,pcmean,color='green')
ax.plot(time,ncmean,color='red')
ax.set_ylabel('fluorescence')
ax.set_xlabel('time/ (s)')
ax.legend()
plt.show()