3

矢印をプロットしようとすると、matplotlib でまれな動作が見つかりました。以下のような図を作ると:

import matplotlib.pyplot as plt
import matplotlib.patches as patches

arrow = patches.FancyArrow(0.,0.,0.4,0.6)

fig = plt.figure(1)
ax1  = fig.add_subplot(121)
ax2  = fig.add_subplot(122)

ax1.add_line(arrow)
plt.show()

最初の軸に矢印が完全に表示されます。しかし、2番目の軸に同じ矢印を追加しようとすると:

import matplotlib.pyplot as plt
import matplotlib.patches as patches

arrow = patches.FancyArrow(0.,0.,0.4,0.6)

fig = plt.figure(1)
ax1  = fig.add_subplot(121)
ax2  = fig.add_subplot(122)

ax1.add_line(arrow)
ax2.add_line(arrow)

plt.show()

矢印がプロットされていないことに注意してください。

同じ図形を作成しようとすると、今度は別の矢印オブジェクトのコピーを使用します。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

arrow1 = patches.FancyArrow(0.,0.,0.4,0.6)
arrow2 = patches.FancyArrow(0.,0.,0.4,0.6)

fig = plt.figure(1)
ax1  = fig.add_subplot(121)
ax2  = fig.add_subplot(122)

ax1.add_line(arrow1)
ax2.add_line(arrow2)

plt.show()

各パネルに 1 つずつ、両方の矢印が表示されます。そのため、さまざまなメソッドとオブジェクトの間に依存関係があるようです。誰かがここで何が起こっているか知っていますか? FancyArrow はバグがありますか? ありがとう。

4

1 に答える 1

1

同じアーティスト オブジェクトを複数に追加することはできませんaxes[将来的には、これはライブラリによって強制される予定です]。

アーティストを Axes に追加すると、artistとの内部が少しずつ混同されます。axesたとえば、のget_axes内容を返します。複数の軸に追加すると、追跡するのが難しくなります。 axesArtist

これは、Figure 間で軸を移動するのが難しい理由に関連しています ( matplotlib.figure.Figure の配列を作成した後、それらを 1 つの Figure のサブプロットとして描画するにはどうすればよいですか?およびmatplotlib Figure オブジェクトをサブプロットとして含めるにはどうすればよいですか? ) 。

于 2013-08-01T01:46:08.363 に答える