User Tools

Site Tools


Sidebar

python:matplotlib:基本的な使い方

This is an old revision of the document!


概要

matplotlibの必要最低限の使い方を解説します。

関数のプロット

三角関数を例に、関数のプロット方法と簡単な調節の仕方を紹介します。

初めてのプロット

とりあえずsin関数を書いてみましょう。 次のスクリプトを作成します。

sin.py
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-np.pi, np.pi, 0.1)  # xを-πからπまで0.1刻みで用意する
y = np.sin(x)                      # y = sin x
 
plt.plot(x, y)   # 横軸をxとして y=y(x) のグラフをプロットする
plt.show()       # プロットしたグラフを画面に表示する

それぞれのコードの意味はコメントを参照してください。 スクリプトができたら

$ python sin.py

を実行するとグラフが表示されます。

保存するにはグラフが表示されたウィンドウの上の方にあるフロッピーディスクのマークをクリックします(Ctrlキーを押しながらsを押すのでも可)。

あるいはplt.savefigを使うとファイルに直接出力できます。

sin.py
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-np.pi, np.pi, 0.1)
y = np.sin(x)
 
plt.plot(x, y)
plt.savefig("sin.png")   # プロットしたグラフをファイルsin.pngに保存する

保存できる形式は

  • emf
  • eps
  • jpeg
  • jpg
  • pdf
  • png
  • ps
  • raw
  • rgba
  • svg
  • svgz
  • tif
  • tiff

です。 拡張子により自動判別されます。

ラベルの作成

このままだと縦軸と横軸がなんなのかわからないので、軸にラベルをつけます。 ついでにタイトルもつけます。

sin.py
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-np.pi, np.pi, 0.1)
y = np.sin(x)
plt.title("graph")   # グラフのタイトル
plt.xlabel("x")      # x軸(横軸)のラベル
plt.ylabel("sin x")  # y軸(縦軸)のラベル
 
plt.plot(x, y)
plt.show()

複数のグラフ

複数のグラフを同時にプロットしたい場合を扱います。 例えばsin関数とcos関数を同時にプロットしたい場合は、次のようにします。 どっちのグラフがどっちの関数かわからなくなるので凡例(legend)をつけます。

sin.py
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-np.pi, np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
 
plt.title("graph")
plt.xlabel("x")
plt.ylabel("y")
 
plt.plot(x, y1, label="sin x")   # labelに凡例に表示する文字を指定
plt.plot(x, y2, label="cos x")
plt.legend()                     # 凡例を表示
 
plt.show()

凡例の表示する位置は、matplotlibが適切な位置を自動的に探します。 手動で設定する場合は、例えば左上の場合は

plt.legend(loc="upper left")

とします。 (右下の場合は lower right とします。他も同様)

プロット範囲の指定

matplotlibでは、そのままプロットするとすべてのデータが枠内に収まるようにプロットされます。 プロットしたい範囲を制限する場合は次のようにします。

sin.py
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-2.0 * np.pi, 2.0 * np.pi, 0.1)  # -2πから2πまでのxを用意 
y1 = np.sin(x)
y2 = np.cos(x)
 
plt.title("graph")
plt.xlabel("x")
plt.ylabel("y")
 
plt.plot(x, y1, label="sin x")
plt.plot(x, y2, label="cos x")
plt.legend()
 
plt.xlim(-np.pi, np.pi)   # x軸は-πからπまで
plt.ylim(-1.2,   1.2)     # y軸は-1.2から1.2まで
 
plt.show()

データのプロット

python/matplotlib/基本的な使い方.1516457860.txt.gz · Last modified: 2021/06/27 21:59 (external edit)