1

次の条件の両方が真の場合、 matshow() または imshow() を取得して実際にプロットを表示することはできません: (1) インタラクティブ モードが on:import matplotlib.pyplot as plot; plot.ion()で、(2) 特定のサブプロットで matshow を使用しようとしています: fig = plot.figure(); ax = fig.add_subplot(111); ax.matshow([[1,2],[3,0]])

(注: 明示的な軸なし)を使用plot.matshow([[1,2],[3,0]])すると、対話モードで検索が機能しますが、常に単一の軸オブジェクトを含む新しい Figure ウィンドウが作成されます。サブプロットを含む上記のコードは、plot.show() を使用したインタラクティブ モードなしでも正常に動作し、画像を正しい軸に配置します。

さらに奇妙なことに、サブプロットを含む上記のコードは、ズーム ツールを使用して Figure ウィンドウ内をランダムにクリックするなどして Figure を操作すると画像を表示します (目に見える Axes オブジェクトはありませんが、中央のどこかをクリックするだけです)。 Figure ウィンドウの)。

これを引き起こしている可能性のあるアイデア、修正方法、または特定のサブプロットで matshow または imshow を使用する方法を回避する方法はありますか (最終的な使用例は、図に複数のサブプロットを含めることです)。これは、python (2.7.6) および ipython (1.1.1) で発生します。

4

1 に答える 1

1

これは、次のドキュメントと関係がある可能性があります。

新しい Figure ウィンドウに配列を行列として表示します。

ただし、imshow適切な引数を使用することもできます。

import matplotlib.pyplot as plt

plt.imshow(mat, interpolation='nearest', origin='upper', aspect='equal')

少し奇妙ではありますが、これは同じことを行うはずです。これは、実際にmatshow内部で行うこととまったく同じです。画像にいくつかの目盛りマーカーを追加するだけです。

また、ソースを確認する (またはヘルプ文字列をよく読む) ことにより、次のことを試みることができます。

plt.matshow(mat, fignum=0)

これにより、 を使用して選択した現在の軸を強制的に使用する必要がありますgca

この他にも、ax.matshowあなたが使っていたものがあります。実際には、主に新しいイメージを作成するためのplt.matshow非常に薄いラッパーです。ax.matshow

matshowサブプロットまたはサブプロットでまだ問題がある場合はimshow、最小限の完全な例を作成してください。これは、インタラクティブシェル(IPython)で試したものです。

figure()
ax = subplot(121)
ax2 = subplot(122)
ax.matshow(random.random((20,30)))
ax2.plot(linspace(-1,1,100), linspace(-1,1,100)**2)
draw()

(問題は欠落している可能性がありdrawますか?)

私が得たもの:

ここに画像の説明を入力

于 2014-07-02T21:01:36.667 に答える