Matplotlibで論文や発表用の図を作る

# はじめに
都内の大学で大学院生をしています．研究室に配属された方は，発表や論文でグラフを掲載することがあると思います．特に，PythonユーザはMatplotlibを用いて作成することがあると思います．デフォルトの設定でもいいのですが，できれば簡素で綺麗な図を作成したいものです．そこで，今回は私が使っている設定を共有しようと思います．
# 環境
- Ubuntu 24.04.1 LTS
- Python 3.11.11
- matplotlib 3.7.5

matplotlibは以下のようにimportしているとします．
```python
import matplotlib.pyplot as plt
```
# フォントのインスール・設定
図で使用するフォントはArialかHelveticaが良いとされています．
私はArialを使用していますが，UbuntuにはデフォルトでArialは入っていないのでインストールします．
```
sudo apt install ttf-mscorefonts-installer
sudo fc-cache -f
fc-match Arial
```
以下のような出力が出れば成功です
```
Arial.ttf: "Arial" "Regular"
```

このあと，matplotlibのキャッシュを削除します

```
rm ~/.cache/matplotlib -rf
```
これで，Arialが使用可能になったのでコード内に以下のように設定します．
```python
# Arialフォントを使用するように設定
plt.rcParams['font.family']= 'Arial'

# フォント設定の確認
print("Current font family:", plt.rcParams['font.family'])
```

# 各種設定
以下のように設定しています．補助目盛りやグリッドの有無は指導教員の指示に従ってください．
```python
#フォント設定
plt.rcParams["font.size"] = 18 # 全体のフォントサイズ
plt.rcParams['xtick.labelsize'] = 12 # x軸のフォントサイズ
plt.rcParams['ytick.labelsize'] = 12 # y軸のフォントサイズ

#軸設定
plt.rcParams['axes.linewidth'] = 1.2 #軸の太さ
#plt.rcParams['axes.grid']=True #グリッドの表示
#plt.rcParams['grid.linestyle']='--' #グリッドの線のスタイル
#plt.rcParams['grid.linewidth'] = 0.3 #グリッドの線の太さ

#目盛り設定
plt.rcParams['xtick.direction'] = 'in' #x軸の目盛りの向き
plt.rcParams['ytick.direction'] = 'in' #y軸の目盛りの向き
plt.rcParams['xtick.top'] = True  #x軸の上部目盛り
plt.rcParams['ytick.right'] = True  #y軸の右部目盛り

plt.rcParams['xtick.major.size'] = 5 #x軸の目盛りのサイズ
plt.rcParams['ytick.major.size'] = 5 #y軸の目盛りのサイズ
plt.rcParams['xtick.major.width'] = 1.2 #x軸の目盛りの太さ
plt.rcParams['ytick.major.width'] = 1.2 #y軸の目盛りの太さ

#plt.rcParams["xtick.minor.visible"] = True  #x軸補助目盛りの追加
#plt.rcParams["ytick.minor.visible"] = True  #y軸補助目盛りの追加
#plt.rcParams['xtick.minor.size'] = 3 #x軸の補助目盛りのサイズ
#plt.rcParams['ytick.minor.size'] = 3 #y軸の補助目盛りのサイズ
#plt.rcParams["xtick.minor.width"] = 1.0 #x軸補助目盛りの太さ
#plt.rcParams["ytick.minor.width"] = 1.0 #y軸補助目盛りの太さ

#凡例設定
plt.rcParams["legend.fontsize"] = 14 #凡例のフォントサイズ
plt.rcParams["legend.fancybox"] = False  # 丸角OFF
plt.rcParams["legend.framealpha"] = 1  # 透明度の指定、0で塗りつぶしなし
plt.rcParams["legend.edgecolor"] = 'black'  # edgeの色を変更

#画質
plt.rcParams['figure.dpi'] = 600
```

# 描画例

```python
# 例として簡単なグラフを生成する
plt.figure()
plt.plot([0.1,0.9], [0.1,0.9], label="line")
plt.xlabel("X label")
plt.ylabel("Y label")
plt.legend()
plt.show()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113682/dbdfa46e-b00e-1f58-fede-2a39ac7dcc44.png)

なお，保存する場合は以下のようにします．Matplotlibではpdf出力が可能なのでpdf形式にしても構いません
```python
plt.savefig('test.png')
plt.savefig('test.pdf')
```

# おわりに
いかがだったでしょうか？今までデフォルト設定で使っていた方は是非試して頂けたらと思います．また，この他にも良い設定を知っている方がいましたら共有して頂けると嬉しいです．

# 参考文献・記事
以下の文献・記事を参考にしました．ありがとうございました．

https://pubs.acs.org/doi/10.1021/acs.chemmater.6b00306

https://authorservices.wiley.com/author-resources/Journal-Authors/Prepare/manuscript-preparation-guidelines.html/figure-preparation.html

https://askubuntu.com/questions/651441/how-to-install-arial-font-and-other-windows-fonts-in-ubuntu

http://www.geoenv.tsukuba.ac.jp/~tyam/lab/tips/graph.pdf

https://qiita.com/yuki_2020/items/7f96c79614c2576a37d3

https://qiita.com/nabenabe0928/items/a026555917525e2bd761

https://qiita.com/MENDY/items/fe9b0c50383d8b2fd919

https://qiita.com/M_Kumagai/items/b11de7c9d06b3c43431d