matplotlibはPythonで簡単にグラフを描くことができるパッケージです。しかしデフォルトの設定だと何とも味気ない感じになります。科学誌の論文はとても綺麗ですが、本記事ではそこを目標にmatplotlibの設定備忘録を示します。
こんにちは。wat(@watlablog)です。
今回は完全主観で僕が思う綺麗なグラフの設定をメモしていきます!
論文に学ぼう!
論文におけるグラフとは?
論文、特に学術論文は研究成果を筋道立てて述べる文章のことを指します。
論文は内容をわかりやすく読者に伝えることができれば、その成果を広く世間に周知させることができるため、研究者は自身の研究とは別にライティングのスキルも求められます。
とはいっても、セールスライティングとは異なり過剰に研究成果をアピールする必要は無く、極力シンプルに記述することが好まれています。シンプルといっても、内容が不足していては元も子も無いので、情報は全て盛り込む必要があります。
グラフにおいても同様のことが言えます。
グラフはデータを可視化するために有効な手段ですが、「シンプルかつ必要な情報が入っていること」が要求されます。
matplotlibのデフォルトではだめ?
Pythonのmatplotlibはデータ可視化ツールとして非常に強力なパッケージで、世界中で広く使われています。
デフォルトの設定ではもちろん軸の説明や波形のラベル等の情報も入っていません。フォントも各学会ではサイズや種類が指定されていることもよくあります。
もしPythonでデータ処理をしてグラフをそのまま出力して使う場合はデフォルトの設定では情報が不足しているので、自分で設定する必要があります。
グラフ設定例
ここでは「筆者の思う綺麗なグラフ」としてグラフの種類別にPythonコードをまとめます。当WATLABブログで扱う内容が増えたら記事を追記していきます。
折れ線グラフ(単一波形)
折れ線グラフです。このグラフはplt.plotでコーディングされる最も代表的なグラフです。
以下の画像は左がデフォルト、右が追加設定後です。よく論文に載っているような目盛が上下左右にある形を再現しました。
コードは以下です。コメントに意味を記載しましたので参考まで。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#フォントの種類とサイズを設定する。 plt.rcParams['font.size'] = 14 plt.rcParams['font.family'] ='Times New Roman' #目盛を内側にする。 plt.rcParams['xtick.direction'] = 'in' plt.rcParams['ytick.direction'] = 'in' #グラフの上下左右に目盛線を付ける。 f = plt.figure() ax = f.add_subplot(111) ax.yaxis.set_ticks_position('both') ax.xaxis.set_ticks_position('both') #データの範囲と刻み目盛を明示する。 plt.xticks(np.arange(0, 4, 1)) plt.yticks(np.arange(-2, 2, 0.5)) plt.xlim(0,3) plt.ylim(-1, 1) #軸のラベルを設定する。 plt.xlabel('Time [s]') plt.ylabel('Sound pressure[Pa]') #データのラベルと線の太さ、凡例の設置を行う。 plt.plot(t, data, label='Ch.1', lw=0.5) plt.legend() #グラフを表示する。 plt.show() plt.close() |
バリエーションが増えたら追記します。
但し、本ページは完全に筆者の好みの設定です。
このページの通りにグラフを描画したのに査読に落ちた…という苦情はご勘弁下さい!
Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!
コメント