Location: cellLib @ af1f8d8d26f3 / Scripts / plotExp.py

Author:
WeiweiAi <wai484@aucklanduni.ac.nz>
Date:
2022-06-07 10:38:19+12:00
Desc:
Add a simulation script without reset
Permanent Source URI:
https://models.cellml.org/workspace/6bc/rawfile/af1f8d8d26f3cd9f85a1de11bd50811021c52f06/Scripts/plotExp.py

# Plot experiment results
import matplotlib.pyplot as plt

def plotExp(figs,subfigs,figfiles):
   # Set figure dimension (width, height) in inches.
   fig, axs = plt.subplots(figs['rows'],figs['cols'],figsize=(figs['width'],figs['height']))
   plt.subplots_adjust(left=figs['left'], bottom=figs['bottom'], right=figs['right'], top=figs['top'], wspace=figs['wspace'], hspace=figs['hspace']) 
   fig.suptitle(figs['fig_title'],y=figs['title_y'])
   # Set the subfigures  
   for subfig in subfigs.values():       
       rid=subfig['rowid']
       cid=subfig['colid']
       traces=subfig['traces']
       if figs['rows']==1 and figs['cols']==1:
           ax=axs
       elif figs['rows']==1:
           ax=axs [cid]
       elif figs['cols']==1:
           ax=axs [rid]
       else:
           ax=axs [rid,cid]           
       ax.set_xlabel (subfig['xlabel'], fontsize= subfig['labelfont'])
       ax.set_ylabel (subfig['ylabel'], fontsize= subfig['labelfont'])
       ax.grid(visible=subfig['grid'],  axis=subfig['gridaxis'])
       ax.set_title(subfig['plot_title'])
       if subfig['twiny']==True:
           tax = ax.twinx()           
           # draw the traces   
           for trace in traces:
               if trace['y2']==True:
                   tax.plot(trace['dataX'], trace['dataY'], ls=trace['linestyle'], marker=trace['marker'], markevery = 0.1, color=trace['linecolor'], label = trace['lname'])
                   tax.tick_params(axis='y', labelcolor=trace['linecolor'])
                   tax.set_ylabel (subfig['ylabel2'], fontsize= subfig['labelfont'],color=subfig['labelcolor'])
               else:
                   ax.plot(trace['dataX'], trace['dataY'], ls=trace['linestyle'], marker=trace['marker'], markevery = 0.1, color=trace['linecolor'], label = trace['lname'])                     
       else:
           # draw the traces
           for trace in traces:
               ax.plot(trace['dataX'], trace['dataY'], ls=trace['linestyle'], marker=trace['marker'], markevery = 0.1, color=trace['linecolor'], label = trace['lname'])

       if subfig['lgdshow']==True:
           if subfig['twiny']==True:
               lines, labels = ax.get_legend_handles_labels()
               lines2, labels2 = tax.get_legend_handles_labels()
               ax.legend(lines + lines2, labels + labels2, loc = subfig['lgdloc'], bbox_to_anchor=subfig['bbox_to_anchor'],fontsize=subfig['lgdfont'], frameon=False,ncol=subfig['lgdncol'])
           else:
               ax.legend(loc = subfig['lgdloc'], bbox_to_anchor=subfig['bbox_to_anchor'], fontsize=subfig['lgdfont'], frameon=False,ncol=subfig['lgdncol'])   
       
       if subfig['setxlim']==True:
           ax.set(xlim=(subfig['xmin'], subfig['xmax']))
       if subfig['setylim']==True:
           ax.set(ylim=(subfig['ymin'], subfig['ymax']))    
              
   plt.savefig(figfiles)
   plt.show()
   return fig,axs