0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

そろそろ調べずにpyplot使おう

Posted at

目的

タイトルにもあるようにpyplotで結果を描画する際に、ほぼ毎回調べてしまっているがそろそろ卒業したいと思い基礎から勉強したのでアウトプットとしてまとめる。

余談

最近、研究室の課題としてNLP100本ノックに取り組んでいるのですが、第8章のニューラルネットワークでエポックごとに損失と正解率がどのように変化するか描画するのですがその時に調べながらやっていたらpytorch使えるようになったのにpyplotですら毎回調べてやっている自分が恥ずかしくなったため改めて勉強しようと思いました。

準備

今回Pythonを利用していくが、まずmatplotlibをインストールしていない人は下記コードの実行が必要である。

pip install matplotlib

またimportは多くの場合以下のようにすることが多い。コードを見ているとpltを目にすることが多いだろう。

from matplotlib import pyplot as plt

解説

グラフが1つのとき

Code

from matplotlib import pyplot as plt
import random
import numpy as np

x = np.arange(0, 100, 2)
y = np.array([random.randint(0,100) for _ in range(50)])
y = np.random.randint(0, 100, 50)

plt.plot(x, y)
plt.title('Random plot')
plt.xlabel('X')
plt.ylabel('Y')
plt.savefig('out/random_plot.png')

Output

※Codeにてyを2種類書いているのはただの気分

以上のコードが基礎中の基礎になるのだろう。さらにカスタマイズについて学ぶために以下のようにコードを改変した。

Code

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(0.0, 10.0, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, label='sin(x)', color='gray', linestyle='--', linewidth=2, marker='o', markersize=5)
plt.plot(x, y2, label='cos(x)', color='green', linestyle='-.', linewidth=2, marker='D', markersize=5)
plt.legend()
plt.title("To study custom plot")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.savefig("out/custom_plot.png")

Output

非常に見栄えが悪いのは置いておいて、カスタマイズすることができている。

pyplot.plotで指定できる主なパラメータについて以下にまとめる。

パラメーター 説明 種類
color 線の色を変更 green, blue, #FF00FF
linestyle 線の種類を変更 -, --, -., :
linewidth 線の幅を調整 2, 0.5, 1(数値)
marker マーカーのスタイルを変更 o(円),D(菱形),s(四角),^(上三角)
markersize マーカーの大きさを変更 2, 0.5, 5(数値)

その他調整可能なパラメーターについては公式ドキュメント等を見ると良いだろう。

また描画において重要な関数も以下にまとめる。

関数 説明 引数
grid() グリッドを表示 True or False
legend() 凡例(plot関数で指定したlabel) を表示 True or False
title("title") グラフのタイトルを指定・表示 任意の文字列
xlabel("xlabel") x軸のラベルを指定・表示  任意の文字列
ylabel("ylabel") y軸のラベルを指定・表示  任意の文字列
xlim(min, max) x軸の範囲を指定 (例) min=1, max=5
ylim(min, max) y軸の範囲を指定 (例) min=-5, max=5
show() グラフを表示させる ほどんど必要ない
savefig("graph.png") グラフを任意のファイル名で保存 任意の文字列

以上の関数を利用すればほどんどのカスタマイズが可能である。ただし関数の利用には

plt.legend()

のようにモジュールの指定が常に必要である。

※どうしてもモジュール指定したくないときはインポートの際に

from matplotlib.pyplot import *

とすれば

plot(x, y)
legend()
title("To study plot")
xlabel("x")
ylabel("y")
show()

のように、簡潔に書くこともできる。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?