久々にpython投稿。
ちょっと論文を書くのにy軸二つ並べて、モデルから計算した値と実験値を並べたかったので、pythonで描写。
シンプルに公式ホームページの通りに書いていけば問題はないと思う。
外部リンク: Plots with different scales
importはmatplotlibの設定くらい。
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
まずは適当に好みの図の描写設定。
plt.rcParams['font.family']='Arial' plt.rcParams['font.size']= 14 plt.rcParams['axes.linewidth']=2.5 plt.rcParams['xtick.major.width']=2.5 plt.rcParams['xtick.labelsize']=14 plt.rcParams['ytick.major.width']=2.5 plt.rcParams['ytick.labelsize']=14 plt.rcParams['figure.figsize']=(3,4)
それから適当にプロットするモデルのデータ。
X1 = np.array([-0.5]) SLD1 = np.array([15.8]) SLD2 = np.array([6.25]) SLD3 = np.array([11.53]) SLD4 = np.array([2.9])
いつもの。
fig, ax1 = plt.subplots()
ガスガス1軸目をプロット。それから目盛りのサイズやらラベルやらの調整。
ax1.plot(X1,SLD1,marker='v',ms=11,color='orange',fillstyle='none') ax1.plot(X1,SLD2,marker='D',ms=9,color='g',fillstyle='none') ax1.plot(X1,SLD3,marker='x',ms=9,color='m') ax1.plot(X1,SLD4,marker='+',ms=9,color='b') ax1.tick_params(axis ='x', which ='both', top='off',bottom='off', pad=10) ax1.set_xticklabels([]) ax1.set_ylabel(r"$\Delta$"+'SLD$^{2}$'+'x'+'10$^{20}$'+ ' [cm$^{-2}$]',fontname='Arial') ax1.set_ylim(0,20)
2軸目追加。
ax2 = ax1.twinx()
2軸目用の実験データ。
X2 = np.array([0.5]) I1 = np.array([388]) I2 = np.array([187]) I3 = np.array([313]) I4 = np.array([35])
2軸目データのプロットと軸のメモリとラベルの設定。
ax2.plot(X2,I1,marker='v',ms=11,color='orange',fillstyle='none') ax2.plot(X2,I2,marker='D',ms=9,color='g',fillstyle='none') ax2.plot(X2,I3,marker='x',ms=9,color='m') ax2.plot(X2,I4,marker='+',ms=9,color='b') ax2.tick_params(axis ='x', which ='both', top='off',bottom='off', pad=10) ax2.set_xticklabels([]) plt.xlim(-1,1) ax2.set_ylabel('INT [cm$^{-1}$]') ax2.set_ylim(0,400)
最後に絵を出力。figを使っても使わなくても出力は変わんない?
fig.tight_layout() fig.savefig('FIGURE/test1.png', bbox_inches='tight') plt.savefig('FIGURE/test2.png', bbox_inches='tight') plt.show()
絵はこんな感じ。
というわけで、そんなにスケールがあってなかったよ、という絵。
関連記事
D