123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- import numpy as np
- from matplotlib import patches
- from matplotlib.path import Path
- data = []
- r=115
- to_plot = ["a","e","i",
- "b","f","j",
- "c","g","k",
- "d","h","l"]
-
- for i in range(len(to_plot)):
-
- data.append(
- np.transpose(
- np.loadtxt("Fig3%s.txt"%to_plot[i])
- )[-1]
- )
- space = 25
- px = 190-space
- for i in range(len(data)):
- dim = int(np.sqrt(len(data[i])))
- data[i] = np.reshape(data[i], (dim, dim) )
- zero = np.zeros((dim+2*space, dim+2*space))
- zero[space:-space, space:-space] = data[i]
- tmp = zero
-
-
-
- data[i] = -2.7*np.transpose(tmp)*5e22/1e21
-
-
-
- nm_scale = 2
- scale_x = np.linspace( -(250-px)*nm_scale, (250-px)*nm_scale, 500-2*px)
- scale_y = np.linspace( -(250-px)*nm_scale, (250-px)*nm_scale, 500-2*px)
-
- import matplotlib.pyplot as plt
- from matplotlib import rcParams
- from matplotlib import cm
- my_fontsize = 8
- rcParams.update({'font.size': my_fontsize})
- import matplotlib
- matplotlib.rcParams['mathtext.fontset'] = 'stix'
- fig, axs = plt.subplots(3,4)
- axis_color = "white"
- for i in range(len(data)):
- r=75
- if i%3==1: r=100
- if i%3==2: r=115
- if i//3 == 0:
- data[i] = data[i]*100
- print(r)
-
- ax = axs[i%3][i//3]
-
- max_tick = 0
- min_tick = np.amin(data[i])*0.65
- if i//3 == 0:
- min_tick = np.amin(data[i])*0.85
- if i//3 == 2:
- min_tick = np.amin(data[i])*0.55
- if i%3 == 2 and i//3 == 2:
- min_tick = np.amin(data[i])*0.29
-
- if max_tick > 10: max_tick = int(max_tick)
- if min_tick < -10: min_tick = int(min_tick)
-
-
-
-
- scale_ticks = np.linspace(min_tick, max_tick, 2)
- cax = ax.imshow(data[i]
-
- , interpolation='none'
-
- , cmap=cm.hot_r
- ,vmin=min_tick, vmax=max_tick
- , extent=(min(scale_x), max(scale_x), min(scale_y), max(scale_y))
-
- , aspect = 'equal'
-
- )
-
-
- cbar = fig.colorbar(cax, ticks=[a for a in scale_ticks], ax=ax, fraction=0.042, pad=0.04)
- cbar.ax.set_yticklabels(['%2.1f' % (a) for a in scale_ticks], va="center", ha="left")
- if max_tick > 10 or min_tick <= -10:
- cbar.ax.set_yticklabels(['%i' % (int(a)) for a in scale_ticks], va="center", ha="left")
-
-
- lp_cbar = -5
- if max_tick > 10: lp_cbar = -1.5
- if max_tick > 100: lp_cbar = -4.7
-
- cbar.ax.set_ylabel(r'$\Delta \mathrm{Re}(\epsilon)$', labelpad = lp_cbar, fontsize=my_fontsize+1, rotation=90+180)
- if i//3 == 0:
- cbar.ax.set_ylabel(r'$\Delta \mathrm{Re}(\epsilon) \times 100$', labelpad = lp_cbar, fontsize=my_fontsize+1, rotation=90+180)
-
-
-
-
-
-
-
-
-
-
- ax.spines['bottom'].set_color(axis_color)
- ax.spines['top'].set_color(axis_color)
- ax.spines['right'].set_color(axis_color)
- ax.spines['left'].set_color(axis_color)
- ax.tick_params(axis='both', color=axis_color, width = 1.2)
-
-
-
- lp1 = 1.0
- if r==115:
- ax.set_xlabel(r'$Z,\rm nm$', labelpad=lp1, fontsize=my_fontsize+2)
- else:
- ax.set_xticklabels([])
- ax.axis("image")
- s1 = patches.Arc((1., -1.), 2.0 * r, 2.0 * r, angle=0.0, zorder=1.8,
- theta1=0.0, theta2=360.0, linewidth=1.3,
- color=axis_color,
- linestyle='--')
-
-
-
- ax.add_patch(s1)
- axs[0][0].annotate(r'${E}$', xy=(-0.48, 1.05), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='bottom', color="black")
- axs[0][0].annotate(s='', xy=(-0.38,1.24),
- xytext=(-0.38,0.84),
- size=12, xycoords='axes fraction',
- arrowprops=dict(arrowstyle='<->', linewidth=1.5))
- axs[0][0].annotate(r'${k}$', xy=(-0.2, 1.05), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='bottom', color="black")
- axs[0][0].annotate(s='', xy=(-0.36,1.04),
- xytext=(-0.04,1.04),
- size=12, xycoords='axes fraction',
- arrowprops=dict(arrowstyle='<-', linewidth=1.5))
- axs[0][0].annotate(r'$R=\rm 75\;nm$', xy=(-0.53, 0.5), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='left', verticalalignment='center', color="black", rotation = 90)
- axs[1][0].annotate(r'$R=\rm 100\; nm$', xy=(-0.53, 0.5), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='left', verticalalignment='center', color="black", rotation = 90)
- axs[2][0].annotate(r'$R=\rm 115\; nm$', xy=(-0.53, 0.5), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='left', verticalalignment='center', color="black", rotation = 90)
- axs[0][0].annotate(r'$\rm Stage\;1$', xy=(0.5, 1.2), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='top', color="black")
- axs[0][1].annotate(r'$\rm Stage\;2$', xy=(0.5, 1.2), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='top', color="black")
- axs[0][2].annotate(r'$\rm Stage\;3$', xy=(0.5, 1.2), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='top', color="black")
- axs[0][3].annotate(r'$\rm Stage\;4$', xy=(0.5, 1.2), xycoords='axes fraction', fontsize=my_fontsize+4,
- horizontalalignment='center', verticalalignment='top', color="black")
- if r:
- axs[0][0].annotate('(a)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[0][1].annotate('(b)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[0][2].annotate('(c)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[0][3].annotate('(d)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- if r:
- axs[1][0].annotate('(e)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[1][1].annotate('(f)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[1][2].annotate('(g)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[1][3].annotate('(h)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- if r:
- axs[2][0].annotate('(i)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[2][1].annotate('(j)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[2][2].annotate('(k)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
- axs[2][3].annotate('(l)', xy=(0.015, 0.96), xycoords='axes fraction', fontsize=my_fontsize+2,
- horizontalalignment='left', verticalalignment='top', color=axis_color)
-
-
-
-
-
-
- lp2 = -10.0
- axs[0][0].set_ylabel(r'$X,\rm nm$', labelpad=lp2, fontsize=my_fontsize+2)
- axs[1][0].set_ylabel(r'$X,\rm nm$', labelpad=lp2, fontsize=my_fontsize+2)
- axs[2][0].set_ylabel(r'$X,\rm nm$', labelpad=lp2, fontsize=my_fontsize+2)
- for i in range(len(data)):
- print(i)
- ax = axs[i%3][i//3]
- if i//3 != 0:
- ax.set_yticklabels([])
- if i%3 != 2:
- ax.set_xticklabels([])
- ax.locator_params(axis='x',nbins=4)
- ax.locator_params(axis='y',nbins=4)
-
- fig.subplots_adjust(hspace=-0.43, wspace=0.25)
- plt.savefig("plasma-grid.pdf",pad_inches=0.02, bbox_inches='tight')
- plt.draw()
- plt.clf()
- plt.close()
|