核结构经常要画能级图,所以记一下这个代码吧。
# plt 绘制 energy 中的能级,按照 0+,2+,4+,6+,8+,... 的顺序,画在 xleft 处, # 如果 flaglabel == True, 则把 0+, 2+, ..., 画在 xlabel 处。 def EnergyLevels( plt, xleft, xlabel, energy, flaglabel ): for i in range(len(energy)): t = energy[i] plt.quiver(xleft, t, 1, 0, width = 0.003, scale=0.5, headwidth=0, scale_units='x') if flaglabel : plt.text(xlabel, t, '%d$^+$' % (2 * i), fontsize=12) plt.figure(figsize=(10,4.8)) plt.cla(); ax = plt.axes() plt.xticks([]); plt.axis(xmin = -1, xmax = 24, ymin = -3, ymax = 15) ax.spines['top'].set_visible(False); ax.spines['bottom'].set_visible(False) plt.ylabel("$E_x$ (MeV)", fontsize = 15) # Zn60 data J = [ 0, 2, 4, 6, 8, 10, 12 ] PVPC = [ -252.446, -251.649, -250.055, -248.382, -246.383, -243.103, -239.464 ] # lineartol = 1E-3 PVPC_Ex = np.array(PVPC) - (-252.446) PHF = [ -252.260, -251.489, -249.935, -248.372, -246.490, -243.147, -239.665 ] PHF_Ex = np.array(PHF) - (-252.260) SM = [ -254.71978, -253.66814, -252.57132, -251.15156 ] SM_Ex = np.array(SM) - (-254.71978) EXP_Ex = [ 0, 1.004, 2.193, 3.808, 5.292, 8.476, 12.132 ] # plot Zn60 xleft = 1; xlabel = -0.3; EnergyLevels(plt, xleft, xlabel, EXP_Ex, True ) plt.text(xleft, -1, "Expt.", fontsize=12 ) # EXP xleft = 3; xlabel = 3.7; EnergyLevels(plt, xleft, xlabel, SM_Ex, False) plt.text(xleft, -1, "SM", fontsize=12 ) # SM xleft = 5; xlabel = 5.7; EnergyLevels(plt, xleft, xlabel, PVPC_Ex, False ) plt.text(xleft, -1, "PVPC", fontsize=12 ) # PVPC xleft = 7; xlabel = 7.7; EnergyLevels(plt, xleft, xlabel, PHF_Ex, False) plt.text(xleft, -1, "PHF", fontsize=12 ) # PHF plt.text(4, -2.5, "$^{60}Zn$", fontsize = 15) plt.show()
类似地,再画上 Zn62, Zn64 的能级,得到如下图片: