matplotlibでのグラフ作成は簡単ですが,そのまま論文で使う図となると物足りなさを感じます。
この記事では,論文用にグラフを綺麗に作成するための方法についてまとめました。
卒論や修論用に参考にしてみてください!
他のグラフについては以下をご覧ください!
![](https://icochan1.net/wp-content/uploads/2023/02/d3f3f00cf1a7f0b7549c20d4afc63a1b-300x169.png)
![](https://icochan1.net/wp-content/uploads/2023/02/9b4ccaedd1bef1dacccd44245c6b928f-300x169.png)
![](https://icochan1.net/wp-content/uploads/2023/02/c64c5ece666a6407486987541305a212-2-300x169.png)
論文用の複合グラフ
こちらの記事では,以下のようなグラフの作成方法がわかります。
![](https://icochan1.net/wp-content/uploads/2023/02/complex-2-1024x732.png)
Pythonでグラフを作るための準備
Pythonでグラフを作るには以下のモジュールが必要となります。
- matplotlib
- numpy(必要であれば)
- pandas(必要であれば)
matplotlibに関しては必須ですが,pandasとnumpyについてはグラフにしたいデータの種類によって決めてもらうと大丈夫です。
作成手順
まず,論文用の図をつくるときに私が気を付けていることは以下の通りです。
- グラフはモノトーン(白黒)でつくる
- 文字は大きく
- 全て英語でつくる
- 線は太く
モジュールをインポートする
import matplotlib.pyplot as plt
import numpy as np
グラフサイズの設定
まず,グラフのサイズを設定します。
この設定をコピペすると,文書(WordやTex)にそのまま貼っても見やすい大きさになっています。
# 論文用の設定
# centimeters in inches
cm = 1/2.54
plt.rcParams['font.family'] = 'Helavetica' # font familyの設定
plt.rcParams['mathtext.fontset'] = 'stix' # math fontの設定
plt.rcParams["font.size"] = 12
plt.rcParams['figure.subplot.bottom'] = 0.15
plt.rcParams['figure.subplot.left'] = 0.15
plt.rcParams['axes.axisbelow'] = True
5行目:plt.rcParams['font.family'] =
フォントはなんでも良いですが,論文にはArialやHelaveticaがよく使われていると思います。
データの準備
グラフにしたいデータを準備します。
今回は3つのデータにしています。
# データ作成
x = np.array([1, 2, 3, 4, 5])
data1 = [30,50,90,40,70];
data2 = [50,70,50,30,80];
label = ["2018","2019","2020","2021","2022"]
5行目:label =
x軸の目盛りのラベルを設定しています。
単純に数値の場合には必要ありません。
グラフの作成
準備ができたので,プロットしてみましょう!
# グラフの定義
fig = plt.figure(figsize=(12*cm, 8*cm),dpi=300)
ax_left = fig.add_subplot(1,1,1)
ax_right = ax_left.twinx()
# グラフのプロット
# 左軸(折れ線)
P = ax_left.plot(x,
data1,
label=label,
color="#000000",
marker="^",
markerfacecolor='#ffffff',
markeredgecolor="#000000",
markersize = 6)
# 右軸(棒グラフ)
B = ax_left.bar(x,
data2,
tick_label=label,
align="center",
color="#858584")
# 凡例の設定
plt.legend((P[0], B[0]), ("plot", "bar"),
loc='lower center',
bbox_to_anchor=(.5, 1.1),
ncol=3,
fancybox=False,
edgecolor="k")
# 軸周りの設定
ax_left.set_ylim(0, 100)
ax_left.set_xlabel("Time")
ax_left.set_ylabel("Volume1 [XX]")
ax_right.set_ylim(0, 100)
ax_right.set_xlabel("Time")
ax_right.set_ylabel("Volume2 [XX]")
ax_left.grid(axis='y',linestyle='-', color='#e0e0e0')
fig.savefig("complex.png", format="png", dpi=300, bbox_inches='tight')
fig.show()
2行目:fig =
グラフを定義しています。
グラフのサイズは12cm×8cmにしていますが,お好きなサイズにして大丈夫です。
3行目・4行目
軸の設定をしています。
2軸の場合には,1つ目の軸ax_left
に,2つ目の軸ax_right
を追加するイメージです。
8行目:P =
左軸の折れ線グラフをプロットしています。
詳しい設定方法につきましては以下の記事をご覧ください。
![](https://icochan1.net/wp-content/uploads/2023/02/9b4ccaedd1bef1dacccd44245c6b928f-300x169.png)
18行目:B =
右軸の棒グラフを設定しています。
こちらも詳しい設定方法につきましては以下の記事をご覧ください。
![](https://icochan1.net/wp-content/uploads/2023/02/a402c696bf493a873c765923653c07e6-1-300x169.png)
25行目:plt.legend
凡例の設定をしています。
場所は何も設定しなければ自動でいい感じに設定されますが,干渉する場合もあるので枠外上部に設定しています。
33行目・37行目
左のy軸の範囲と右のy軸の範囲を設定します。
34行目・35行目・38行目・39行目
x軸とy軸のラベルを設定しています。
41行目:ax.gird
グリッド線の表示を設定しています。
要らない場合は何も書かず,横線だけ必要な場合にはax.grid(axis='y',linestyle=...)
,縦線も必要な場合にはax.grid(axis='x',linestyle=...)
を追加してください。
42行目:fig.saving
出来上がったグラフを保存します。
形式はpdfでもpngでも大丈夫です。
論文図にはepsやsvgやpdfなどのベクター形式がおすすめです。
コメント