2

Axes3Dプロットを追加するリストがあります。このような:

self.myList.append(self.axes.plot(xValues,
                                  yValues,
                                  zValues,
                                  picker=self.line_picker)[0])

そのコード行が実行されると、plot()関数によって返されたインスタンスがリストに格納され、その行が自動的にプロットされます。これが私が望むものです。このコードはプログラムの起動時に実行され、可変数の行を描画します。

今私がする必要があるのはこれです:

ユーザーがチェックボックスをオンにしたときに、現在プロットされているデータを別のデータセットに置き換えたいと思います。次に、ユーザーがチェックボックスをオフにしたときに、初期データを再度プロットしたいと思います。

初期データのクリアに問題はありません。私は単にします:

self.axes.clear()
self.canvas.draw()
self.axes.mouse_init()

そして今、私は空白の3Dグラフを持っています。

クリアされた後、同じデータを再プロットするにはどうすればよいですか?どういうわけか、リストに保存されているプロットインスタンスを使用して、それらを再プロットできますか?

私の最終的な質問は、最初に行ったように生データを使用して元のプロットを再プロットする必要がありますか、それとも最初の軸を非表示/無効にしてから単純に復元できますか?

4

1 に答える 1

0

おそらく最も簡単な解決策は、アイテムの参照を保持し、特定のアーティストの表示属性を切り替えることです。

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

plt.ion()

ax = plt.axes(projection='3d')
n = 3

xs = np.random.randint(23, 32, n)
ys = np.random.randint(0, 100, n)
zs = np.random.randint(0, 10, n)
scatter = ax.scatter(xs, ys, zs=zs)

plt.draw()
scatter.set_visible(False)
plt.draw()
scatter.set_visible(True)
plt.draw()
于 2012-06-14T18:54:09.413 に答える