Magicode logo
Magicode
0
5 min read

matplotlib の雛形

matplotlib のインストール

!pip install matplotlib japanize-matplotlib
import matplotlib.pyplot as plt
import japanize_matplotlib # タイトルなどで日本語を使う場合
%matplotlib inline

図の下地の作成

ここで図全体のサイズを指定することができる.

fig = plt.figure(figsize=[6.4, 4.8])

がデフォルトのサイズ

図のタイトルの指定

fig.suptitle('title')

図に描くグラフの作成

グラフを一つだけ作る

グラフを一つだけ作る場合は

ax = fig.add_subplot(1, 1, 1, xlabel='xlabel', ylabel='ylabel')

複数個グラフを描く場合は

ax1 = fig.add_subplot(2, 3, 1, xlabel='xlabel', ylabel='ylabel')
ax2 = fig.add_subplot(2, 3, 2, xlabel='xlabel', ylabel='ylabel')
ax3 = fig.add_subplot(2, 3, 3, xlabel='xlabel', ylabel='ylabel')
ax4 = fig.add_subplot(2, 3, 4, xlabel='xlabel', ylabel='ylabel')
ax5 = fig.add_subplot(2, 3, 5, xlabel='xlabel', ylabel='ylabel')
ax6 = fig.add_subplot(2, 3, 6, xlabel='xlabel', ylabel='ylabel')

のようにすれば描ける.

1つ目が行数, 2つ目が列数, 3つ目が順番を表す.

グラフにタイトル

ax.set_title('title')

データの描画

# グラフを一つだけ作成
ax.plot(x, y, label="折れ線")

# グラフを複数作成
ax1.plot(x, y, label="折れ線")
ax2.scatter(x, y, label="散布図")
ax3.bar(x, y, label="棒グラフ")

凡例の描画

ax.legend()

グラフの保存

fig.savefig('./file.png')

対応している拡張子は以下

eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff

グラフのサンプル1

##一番シンプルな折れ線グラフ

fig = plt.figure()
fig.suptitle('一番シンプルな折れ線グラフ $2x+1$')
ax = fig.add_subplot(1, 1, 1, xlabel='$x$', ylabel='$y$')
x = [i for i in range(10)]
y = [2*v + 1 for v in x]
ax.plot(x, y, label="$2x+1$")
ax.legend()
plt.plot()
fig.savefig('file1.png')

1つのグラフに複数の描画

fig = plt.figure()
fig.suptitle('1つのグラフに複数の描画')
fig.subplots_adjust(wspace=1.0)
ax = fig.add_subplot(1, 1, 1, xlabel='$x$', ylabel='$y$')
x = [i for i in range(10)]
y1 = [2*v + 1 for v in x]
y2 = [3*v -5 for v in x]
ax.plot(x, y1, label="折れ線 $2x+1$")
ax.scatter(x, y2, label="散布図 $3x-5$")
ax.legend()
plt.plot()
fig.savefig('file2.png')

複数のグラフに描画

fig = plt.figure(figsize=[9.6, 4.8])
fig.suptitle('一番シンプルな折れ線グラフ $2x+1$')

ax1 = fig.add_subplot(2, 3, 1, xlabel='$x$', ylabel='$y$')
ax2 = fig.add_subplot(2, 3, 2, xlabel='$x$', ylabel='$y$')
ax3 = fig.add_subplot(2, 3, 3, xlabel='$x$', ylabel='$y$')
ax4 = fig.add_subplot(2, 3, 4, xlabel='$x$', ylabel='$y$')
ax5 = fig.add_subplot(2, 3, 5, xlabel='$x$', ylabel='$y$')
ax6 = fig.add_subplot(2, 3, 6, xlabel='$x$', ylabel='$y$')
x = [i for i in range(10)]
y = [2*v + 1 for v in x]
ax1.plot(x, y, label="$2x+1$")
ax2.scatter(x, y, label="$2x+1$")
ax3.bar(x, y, label="$2x+1$")
ax4.plot(x, y, label="$2x+1$")
ax5.scatter(x, y, label="$2x+1$")
ax6.bar(x, y, label="$2x+1$")
ax1.legend()
ax2.legend()
ax3.legend()
ax4.legend()
ax5.legend()
ax6.legend()
fig.subplots_adjust(wspace=0.5)
plt.plot()
fig.savefig('file3.png')

複数のグラフに描画 (for 文を使う)

for 文を使って書くこともできる

fig = plt.figure(figsize=[9.6, 4.8])
fig.suptitle('一番シンプルな折れ線グラフ $2x+1$')
for k in range(1, 6+1, 1):
    ax = fig.add_subplot(2, 3, k, xlabel='$x$', ylabel='$y$')
    x = [i for i in range(10)]
    y = [2*v + k for v in x]
    ax.plot(x, y, label="$2x+{}$".format(k))
    ax.set_title(f'{k}番目のグラフ')
    ax.legend()
fig.subplots_adjust(wspace=0.5, hspace=0.5, )
plt.plot()
fig.savefig('file4.png')

Discussion

コメントにはログインが必要です。