回答:
それを行うにはいくつかの方法があります。このsubplots
メソッドは、図に加えてax
配列に格納されるサブプロットを作成します。例えば:
import matplotlib.pyplot as plt
x = range(10)
y = range(10)
fig, ax = plt.subplots(nrows=2, ncols=2)
for row in ax:
for col in row:
col.plot(x, y)
plt.show()
ただし、次のようなものも機能しますが、サブプロットを使用してFigureを作成し、その上に追加するため、それほどクリーンではありません。
fig = plt.figure()
plt.subplot(2, 2, 1)
plt.plot(x, y)
plt.subplot(2, 2, 2)
plt.plot(x, y)
plt.subplot(2, 2, 3)
plt.plot(x, y)
plt.subplot(2, 2, 4)
plt.plot(x, y)
plt.show()
plot(x, y)
、ユーザー定義関数からのプロットがあり、networkxでグラフを作成します。どうやって使うのですか?
axn = ax.flatten()
その後 、2つのforループを1つに減らすことができますfor axes in axn: axes.plot(x,y)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 2)
ax[0, 0].plot(range(10), 'r') #row=0, col=0
ax[1, 0].plot(range(10), 'b') #row=1, col=0
ax[0, 1].plot(range(10), 'g') #row=0, col=1
ax[1, 1].plot(range(10), 'k') #row=1, col=1
plt.show()
ax
はわかりますが、何であるかはわかりませんfig
。彼らは何ですか?
matplotlib.figure.Figure
、プロットされたFigureに対して多くの操作を行うことができるクラスです。たとえば、特定のサブプロットにカラーバーを追加したり、すべてのサブプロットの背景色を変更したりできます。これらのサブプロットのレイアウトを変更するか、それらに新しい小さな斧を追加できます。fig.suptitle(title)
メソッドで取得できるすべてのサブプロットに単一のメインタイトルが必要な場合があります。最後に、プロットに満足したら、fig.savefig
メソッドを使用してプロットを保存できます。@Leevo
サブプロット呼び出しで座標軸をアンパックすることもできます
そして、サブプロット間でx軸とy軸を共有するかどうかを設定します
このような:
import matplotlib.pyplot as plt
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
ax1.plot(range(10), 'r')
ax2.plot(range(10), 'b')
ax3.plot(range(10), 'g')
ax4.plot(range(10), 'k')
plt.show()
matplotlibバージョン2.1以降では、質問の2番目のコードも正常に機能するという事実に興味があるかもしれません。
変更ログから:
Figureクラスにsubplotsメソッドが追加されました。Figureクラスにsubplots()メソッドが追加されました。これは、pyplot.subplots()と同じように動作しますが、既存のFigureに対して実行されます。
例:
import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
plt.show()
ドキュメントを読む:matplotlib.pyplot.subplots
pyplot.subplots()
fig, ax
表記法を使用して2つの変数にアンパックされたタプルを返します
fig, axes = plt.subplots(nrows=2, ncols=2)
コード
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
はオブジェクトのメンバーではないsubplots()
関数なので、機能しpyplot
ませんFigure
。