4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【matplotlib.pyplot】レイアウトを整えるためのチートシート

Last updated at Posted at 2020-01-07

jupyterなどでmatplotlibで書いたグラフを発表などで使う際に、レイアウトがひちゃかちゃで悲しくなることはありませんか?
そんな時に参考にしたくなるようなチートシートを作ってみました。

公式ドキュメンテーションはこちら

1.プロットする

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y); 

最後の行のセミコロンはjupyterでの不要な出力を省略するために書いています。

出力はこんな感じ。

image.png

2.図のタイトル・軸のタイトルを設定する

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.title("y=sin(x)", fontsize=20)
plt.xlabel("x-axis", fontsize=18)
plt.ylabel("y-axis", fontsize=18)

plt.plot(x, y);

出力はこんな感じ。

image.png

3.目盛り・グリッドを設定する

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.title("y=sin(x)", fontsize=20)
plt.xlabel("x-axis", fontsize=18)
plt.ylabel("y-axis", fontsize=18)
plt.xticks(rotation=-10, fontsize =15)
plt.yticks([-1, -0.5, 0, 0.5, 1], fontsize =15)
plt.minorticks_on() #補助目盛りをつける
plt.grid(which='major') #主目盛りに対してグリッドを書く

plt.plot(x, y);

出力はこんな感じ。

image.png

もし目盛りが邪魔な場合は、

plt.xticks([])

などを挟めば目盛りを消すことも可能です。

4.座標軸・軸の範囲を設定する

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.title("y=sin(x)", fontsize=20)
plt.xlabel("x-axis", fontsize=18)
plt.ylabel("y-axis", fontsize=18)
plt.xticks(rotation=-10, fontsize =15)
plt.yticks([-1, -0.5, 0, 0.5, 1], fontsize =15)
plt.xlim(-1/2, np.pi * 3)
plt.ylim(-1.5, 1.5)
plt.hlines(0, -1, 10) 
plt.vlines(0, -2, 2)
plt.minorticks_on() #補助目盛りをつける
plt.grid(which='major') #主目盛りに対してグリッドを書く

plt.plot(x, y);

出力はこんな感じ。

image.png

5.グラフを重ねる / マーカー・凡例を設定する

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.title("Trigonometric function", fontsize=20)
plt.xlabel("x-axis", fontsize=18)
plt.ylabel("y-axis", fontsize=18)
plt.xticks(rotation=-10, fontsize =15)
plt.yticks([-1, -0.5, 0, 0.5, 1], fontsize =15)
plt.xlim(-1/2, np.pi * 3)
plt.ylim(-1.5, 1.5)
plt.hlines(0, -1, 10) 
plt.vlines(0, -2, 2)
plt.minorticks_on() #補助目盛りをつける
plt.grid(which='major') #主目盛りに対してグリッドを書く

plt.plot(x, y1, label='sin', marker='+', markersize=5)
plt.plot(x, y2, label='cos', marker='.', markersize=5)
plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=0.5, fontsize=18);

出力はこんな感じ。

image.png

plotの際のマーカーについてこの方が全て試して下さっています。
http://ailaby.com/plot_marker/

凡例(legend)の使い方についてまとめて下さっています。凡例はきっちりと書かないと残念なグラフになってしまうので特に重要ですね。
https://qiita.com/matsui-k20xx/items/291400ed56a39ed63462

6.総括・今後の展望

今回1つのプロットのレイアウトについてまとめてみました。
設定できることが意外と多くてびっくりしました(小並感)。

figやaxを使った複数のグラフの書き方もいつか自分でもまとめてみようと思います。
この方のqiitaがめっちゃまとまってそうなので、その際はぜひ参考にさせて頂きます。
https://qiita.com/nkay/items/d1eb91e33b9d6469ef51

他にも、matplotlibのいろんなグラフやseabornについてもまとめてみたいですね。

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?