web-dev-qa-db-ja.com

matplotlibを使用した多数のサブプロット

Python matplotlibを使用して、多数(100)のサブプロットを含むプロットを作成したいと思います。適切な構文が見つかりません:

私は次のようなものが欲しいです(これは機能していません)

_plt.subplot(10,10,i,X1, Y) 
_

iが0から99のループで、次に

_plt.show()
_

サブプロットが少ない場合の構文は、多くのチュートリアルで利用できます。次に、構文は次のようになります。

_plt.close('all')
fig = plt.figure()

ax1 = plt.subplot(221)
ax2 = plt.subplot(223)
ax3 = plt.subplot(122)

example_plot(ax1)
example_plot(ax2)
example_plot(ax3)

plt.tight_layout()
_

コードはここからです

私の問題では、plt.subplot(10101)などがあるので、同じ構文を使用できないと思いますが、理解できません。

解決策はありますか?

ありがとう

11
kiriloff

これを試して:

fig, ax = plt.subplots(10, 10)

ここで、axは(リストの)リストに100個の軸を含みます。

これは本当に便利な関数です。 ドキュメント

Definition: plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, **fig_kw)
Create a figure with a set of subplots already made.

This utility wrapper makes it convenient to create common layouts of
subplots, including the enclosing figure object, in a single call.
14
jorgeca

これは、人々がまだここを見に来ているように見えるので、物事がどのように番号付けされているかを示す完全に機能するコードソリューションです:

columns = 10
rows = 4
fig, ax_array = plt.subplots(rows, columns,squeeze=False)
for i,ax_row in enumerate(ax_array):
    for j,axes in enumerate(ax_row):
        axes.set_title('{},{}'.format(i,j))
        axes.set_yticklabels([])
        axes.set_xticklabels([])
#         axes.plot(you_data_goes_here,'r-')
plt.show()

これは、ナンバリングがどのように機能するかを示すためにこれを出力します(画像を少し小さくするために、10行ではなく4行のみを実行しました。「行」を10に変更して、10行のサブプロットを取得します)。

Matplotlib array of subplots

番号付けにより、各位置にあるi値とj値が示されるため、matplotlibサブプロットの配列に必要な方法で並べることができます。これにより、任意のレイアウトの配列にサブプロットが組み込まれます。

6

あなたの例はほぼ正しいです。使ってください:

for i in range(100):
    ax = plt.subplot(10,10,i)
    ax.plot(...)
6
btel

最大100個のサブプロットを生成しようとしている場合、実際問題として、 this のように実行すると、はるかに高速に実行されます。個々の軸のラベルをあきらめますが、100個のサブプロットを使用すると、hugeの印刷を行わない限り、ラベルを読み取ることができなくなります。

3
tacaswell