matplotlib を使用して、常に更新されているデータを表示しています (1 秒あたり約 10 回変化します)。私は 3D 散布図を使用しています。プロットのエッジに対するデータの位置が重要であるため、軸を特定の範囲に固定したいと考えています。
現在、新しいデータを追加するたびに、軸は必要なサイズではなく、データによってスケーリングされるようにリセットされます (hold=False の場合)。hold=True を設定すると、軸は適切なサイズのままですが、新しいデータが古いデータにオーバーレイされます。これは私が望むものではありません。
新しいデータを取得するたびに軸を再スケーリングすれば動作させることができますが、特に他のすべての書式設定 (タイトル、凡例の追加など) を再度行う必要があるため、これは非効率的な方法のように思えます。
プロットのプロパティを一度だけ指定できる方法はありますか?新しいデータを追加すると、これは修正されたままになりますか?
私が何を意味するかを説明するのを助けるために、ここに私のコードの大まかな概要があります:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
X_MAX = 50
Y_MAX = 50
Z_MAX = 50
fig = plt.figure(1)
ax = fig.add_subplot(111, projection='3d')
ax.set_title("My Title")
ax.set_xlim3d([0, X_MAX])
ax.set_ylim3d([0, Y_MAX])
ax.set_zlim3d([0, Z_MAX])
ax.set_autoscale_on(False)
# This is so the new data replaces the old data
# seems to be replacing the axis ranges as well, maybe a different method should be used?
ax.hold(False)
plt.ion()
plt.show()
a = 0
while a < 50:
a += 1
ax.scatter( a, a/2+1, 3, s=1 )
# If I don't set the title and axes ranges again here, they will be reset each time
# I want to know if there is a way to only set them once and have it persistent
ax.set_title("My Title")
ax.set_xlim3d([0, X_MAX])
ax.set_ylim3d([0, Y_MAX])
ax.set_zlim3d([0, Z_MAX])
plt.pause(0.001)
編集: 1. ax.set_autoscale_on(False) も試しましたが、成功しませんでした 2. 通常の 2D 散布図でこれを試しましたが、同じ問題がまだ存在します 3.まだない関連する質問を見つけました答え