Python matplotlibライブラリの使い方のまとめ
忘れないようにmatplotlibライブラリの基礎活用方法をまとめておく。
matplotlibとはPythonでグラフを描画するのに利用するライブラリです。
利用方法はmatplotlibライブラリのpyplotサブモジュールを利用します
import matplotlib.pyplot as plt
# 文字が長いので as pltで別名を付けて利用されます。
グラフを描画してみる。
x = np.arange(0, 10, 0.1)
y = x
plt.plot(x, y) # plot関数で引数にデータを渡しグラフを描画します。
plt.show() # show()関数でグラフを表示させます。
このようなグラフが表示されました。
plt.glid()メソッドでグリッド線を追加させる。
x = np.arange(0, 10, 0.1)
y = x
plt.plot(x, y)
plt.grid() # grid関数でグリッド線を表示できます。
plt.show()
グリッド線を追加する事でxの値に対応yの値がわかりやすくなります。
複数のグラフを描画するには
plt.figure()メソッドで複数の複数のグラフを配置する場所を作る。
figureクラスオブジェクトのadd_subplot()メソッドで行列数を決めて、何番目にグラフ配置を行うか指定します。
x_1 = np.linspace(0, 1, 50)
y_1 = x_1 + 1
x_2 = np.linspace(0, 1, 50)
y_2 = 2 * x_2 + 1
x_3 = np.linspace(0, 1, 50)
y_3 = 3 * x_3 + 1
fig = plt.figure() # plt.figure()メソッドで複数のグラフを配置する領域を作ります。
ax_1 = fig.add_subplot(311) # figure.add_subplot()メソッド:
ax_2 = fig.add_subplot(312) # 行列番号を指定してグラフ領域を作ります。引数(行 列 番目)
ax_3.plot(x_3, y_3)
plt.show()
3行1列のグラフの配置がされました。
グラフのサイズを変更する
plt.figure()メソッドの引数にfigsizeを設定する事で任意のサイズ変更可能。
# figsize属性で大きさを設定します。figure(figsize=(ヨコ, タテ))
fig = plt.figure(figsize=(20, 12))
具体的なグラフの記述方法
折れ線グラフ
必要なデータ: xの値とyの値
df = pd.DataFrame({"A": np.random.rand(30)}) # 乱数をもつDataFrameを作成
plt.figure(figsize=(12, 8))
plt.plot(df["A"]) # yの値としてDataFrameの乱数を渡す。
plt.show()
グラフのタイトル、横縦軸ラベル、凡例設定
titleメソッド: 引数に文字列を指定する事でグラフタイトルを設置可。
xlabelメソッド: 引数に文字列を指定する事でヨコ軸名を設置可。
ylabelメソッド: 引数に文字列を指定する事でタテ軸名を設置可。
いずれもfontsize=で文字サイズを設定可能。
legendメソッド: 凡例を設置可。
df = pd.DataFrame({"A": np.random.rand(30),
"B": np.random.rand(30)})
plt.figure(figsize=(12,8))
plt.plot(df["A"])
plt.plot(df["B"])
plt.title("title", fontsize=20) # titleメソッドでグラフ名を設定出来る。
plt.xlabel("x", fontsize=15) # ヨコ軸ラベルを設置
plt.ylabel("y", fontsize=15) # タテ軸ラベルを設置
plt.legend(["data1", "data2"]) # 凡例の設置
plt.show()
線の色・太さ・線のスタイルの設定
plotメソッドにパラメータを設定する事で可能となる。
color ="xxxxx": 線の色指定。
linewidth=xxx: 線の太さ指定
linestyle="xxxx": 線のスタイル変更。点線等
plt.figure(figsize=(12,8))
# パラメータを設定して色やサイズ、スタイルを変更する
plt.plot(df["A"], color="lime", linewidth=5.0, linestyle="solid")
plt.plot(df["B"], color="navy", linewidth=5.0, linestyle="dashed")
plt.title("title", fontsize=20)
plt.xlabel("x", fontsize=15)
plt.ylabel("y", fontsize=15)
plt.legend(["data1", "data2"])
plt.show()
散布図の描画
scatterメソッド: 引数にデータセット(組)を渡して散布図を描画する。
plt.figure(figsize=(12, 8))
plt.scatter(df["A"], df["B"]) # 散布図を描画する。
plt.show()
scatterメソッドもパラメータを設定する事で点のサイズ、色、形を変更する事が可能。
plt.scatter(df["A"], df["B"], s=200, c="navy", maker="*", alpha=0.5
# s=サイズ c=カラーコード maker=形 alpha=透明度
ヒストグラムの描画
histメソッド: ヒストグラムを描画する。
df = pd.DataFrame({"data": np.random.rand(500)})
plt.figure(figsize=(12, 8))
plt.hist(df["data"], bins=20, rwidth=0.8, color="navy")
#bins=ピン数 rwidth=太さ
plt.show()
円グラフの描画
pieメソッド: 円グラフを描画する。設定変更で割合など表示可能。
x = np.random.randint(0,5,500)
df = pd.DataFrame({"data": x})
plt.figure(figsize=(10, 10))
textprops = {"fontsize": 20} # 書式の設定値
# pie()で円グラフを描画
plt.pie(df["data"].value_counts(),
labels=df["data"].value_counts().index,
# autopct=: 割合を表示 %.1%%で小数点以下1桁で表示
autopct= "%.1f%%",
# startangle= 開始位置を設定デフォルト3時のため12時からにするには90°指定する
startangle=90,
# counterclock= デフォルト半時計周りのため、Falseを渡す事で時計回りに変更可能
counterclock=False,
# textprops= テキストのプロパティ。書式設定を行う。辞書型
textprops=textprops)
plt.show()
スタイルの設定<seabornライブラリ>
seabornライブラリを使ってグラフのスタイルをカッコよく出来る。
import seaborn as sns # seabbornライブラリのインポート
sns.set_style('darkgrid') # set.styleメソッドでテーマを渡してスタイル設定
罫線入りのスタイルに変わった。
グラフを画像ファイルで出力する
savefigメソッドで画像ファイルとして出力。
x = np.linspace(0, 1, 10)
y = 2 * x + np.random.randn(10)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)
plt.savefig("test.png") # 引数に保存先、ファイル名