4

次から次へと素晴らしいプロットを提供するこのコードを使用しています(IPython-notebookとPandasを使用)

for subsm in subsl:
    H7, subsm = sumsubdesc2(table, subsm)   
    ax1=H7.plot()
    plt.title('Rolling 4q mean %s'%(subsm))
    ax1.set_title('Rolling 4q mean %s'%(subsm))
    ax1.set_ylim(100000,600000)

すべてのサブプロットの例は、データまたは特定のプロットをサブプロットするためのものであるように見えるため、合計3行(5つのサブプロット)で次から次へとプロット「2up」を取得したいと思います。特定のグリッド配置。

だから、メイン プロットを作成してから、複数のグラフ (この場合は 5) をサブプロットして、タイトルを 2 アップにする方法がわかりません。

関数呼び出しを省略したため、コードの 2 行目を編集します ;-(

4

2 に答える 2

8

必要な作業は次のとおりです。

import math
import matplotlib.pylab as plt

nrows = int(math.ceil(len(subsl) / 2.))

fig, axs = plt.subplots(nrows, 2)

ylim = 100000, 600000
for ax, subsm in zip(axs.flat, subsl):
    H7, subsm = sumsubdesc2(table, subsm)
    H7.plot(ax=ax, title='Rolling 4q mean %s' % subsm)
    ax.set_ylim(ylim)

これは、最短の iterable がなくなったときにaxs.size > len(subsl)sinceが発生した場合でも機能します。行順の平坦化された配列に対する反復子であることにStopIteration注意してください。axs.flataxs

表示されていない最後のプロットを非表示にするには、次の操作を行います。

axs.flat[-1].set_visible(False)

より一般的にaxs.size - len(subsl)は、グリッドの最後に追加のプロットを作成するには、次のようにします。

for ax in axs.flat[axs.size - 1:len(subsl) - 1:-1]:
    ax.set_visible(False)

そのスライスは少しぎこちないように見えるので、説明します。

配列axsにはaxs.size要素があります。の平坦化されたバージョンの最後の要素のインデックスはaxsですaxs.size - 1subslにはlen(subsl)要素があり、最後の要素のインデックスについても同じ理由が適用されます。axsただし、 の最後の要素から最後にプロットされた要素に戻る必要があるため、-1 ずつ進める必要があります。

于 2013-09-19T21:41:48.673 に答える
1

よくわかりませんが、あなたが求めているのは

# not tested
import math
import matplotlib.pylab as plt

Nrows = math.ceil(len(subsl) / 2.)
for i in range(len(subsl)):
    subsm = subsl[i]
    H7, subsm = sumsubdesc2(table, subsm) 
    plt.subplot(Nrows, 2, i+1)

    # do some plotting

    plt.title('Rolling 4q mean %s'%(subsm))

「ツーアップとしてのタイトル」の意味がわかりません。

于 2013-09-19T18:09:07.153 に答える