Edited at

[Python] matplotlib: 論文用に図の体裁を整える

理系の論文用に使用する図を matplotlib の pyplotで作るときに使用するコマンドをまとめます。

主に,physical review などの物理系論文の図として使用しましたが,おそらく他の分野でも使えます。

2 columnの論文を想定しており,

図の幅は1 column 分の図で 8 cm,2 column 分の図で16 cm としています。


モジュールのインポート

import matplotlib.pyplot as plt

以前は pylab をインポートしていたが,pylabは numpy と matplotlibの関数の一部をとってきているようで,

numpy は別途インポートしているため,上記を使用しています。


全体の設定:rcParams

使用するコード内で rcParams を使用すれば,各図を修正しなくても一括で図のパラメータを変更できます。

plt.rcParams['font.family'] ='sans-serif'#使用するフォント

plt.rcParams['xtick.direction'] = 'in'#x軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')
plt.rcParams['ytick.direction'] = 'in'#y軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')
plt.rcParams['xtick.major.width'] = 1.0#x軸主目盛り線の線幅
plt.rcParams['ytick.major.width'] = 1.0#y軸主目盛り線の線幅
plt.rcParams['font.size'] = 8 #フォントの大きさ
plt.rcParams['axes.linewidth'] = 1.0# 軸の線幅edge linewidth。囲みの太さ

フォントの 'sans-serif' は 「ひげ飾り」がない文字のことで,通常論文の図に用いる文字はひげ飾りなしを用いることが多いです。

フォントの大きさが8なのは,キャプションの説明文と同じくらいの文字サイズになるからです。


各図の設定


  • 図のサイズの設定

plt.figure(figsize=(3.14,3.14))

図のサイズはインチで指定され、変数は(幅, 高さ)です。

3.14 インチは約8cm。横幅を変えず高さを調節すると良いです。


  • 軸の数値の桁数指定:

plt.gca().yaxis.set_major_formatter(plt.FormatStrFormatter('%.3f'))#y軸小数点以下3桁表示


  • 軸の数字にオフセット(+1.05e9 など)を使わずに表現する

plt.gca().xaxis.get_major_formatter().set_useOffset(False)


  • 軸の数字が整数になるようにする

plt.gca().yaxis.set_major_locator(ticker.MaxNLocator(integer=True))


  • 軸目盛りの個数指定:

plt.locator_params(axis='y',nbins=6)#y軸,6個以内.


  • 軸目盛りの向きおよび枠のどの位置はありにするかを指定:

plt.gca().yaxis.set_tick_params(which='both', direction='in',bottom=True, top=True, left=True, right=True)


  • 図のコマンドの最後で以下を使用する:

plt.tight_layout()#グラフが重ならず,設定した図のサイズ内に収まる。

plt.savefig('figname.pdf', transparent=True)
plt.savefig('figname.png', transparent=True, dpi=300)

拡張子を変えることで図のフォーマットが変わります。transparentを指定することで,背景が透明に。dpi はビットマップ画像のドット密度です。

図を保存後、TeXやワードで横幅8cmなどの出力したサイズに指定して使います。


  • カラーマップ

plt.contour(X, Y, Z, cmap='viridis') # viridisの配色で等高線を描く

配色は、色覚異常の人でも判別しやすいとされる viridis がおすすめです。

[メモ] 随時更新していきます。


参考文献