2

次のように、図の複数の軸に BrokenBarHCollection を追加しようとしています。

barcollection = collections.BrokenBarHCollection(...
ax1 = plt.subplot(211)
ax1.add_collection(barcollection)
ax2 = plt.subplot(212)
ax2.add_collection(barcollection)
plt.show()

そのままで、図は 2 番目のサブプロットのコレクションのみを示しています。ax2.add 行をコメントアウトすると、最初のサブプロットにのみコレクションが表示されます。3 行目と 4 行目の間で barcollection を再度宣言すると、両方のサブプロットに表示されます。なぜこうなった?

4

1 に答える 1

3

これは、matplotlibオブジェクトがどのプロットにアタッチされているかを認識しており、複数のプロットにアタッチされないためです。

copy モジュールを使用して浅いコピーを作成すると、複数の軸にわたってほとんどのデータ構造を再利用できます。

import copy
bc2 = copy.copy(barcollection)
ax2.add_collection(bc2)

最近これについて別の質問がありましたが、見つけるのに苦労しています。

于 2012-11-09T02:21:33.357 に答える