現在、私のWalabotデバイスから3D-rawdataを視覚化して、matplotlib FuncAnimationで作成した3Dアニメーションで表示したいと考えています。私はすでに回答を探していましたが、役に立たないものは見つかりませんでした。 私の場合、3次元配列を既に持っています。各インデックスには時間の経過と共に変化する特定の値があります。私はすでにさまざまな色とサイズの3Dチャートで表示する方法を理解することができましたが、今は自分でアップデートしたいと思っています。私は良いスタートを与えたいくつかのサンプルコードを見つけましたが、私のチャートはそれ自身では更新されません。私はウィンドウを閉じなければならないし、ウィンドウは再び3D配列から異なる値でポップアップします。あなたはこの問題を解決する方法を知っていますか?ここ は、これまでの私のコードです:Pythonの3D配列の値のMatplotlibアニメーション
def update(plot, signal, figure):
plot.clear()
scatterplot = plot.scatter(x, y, z, zdir='z', s=signal[0], c=signal[0])
figure.show()
return figure
def calc_RasterImage(signal):
# 3D index is represnted is the following schema {i,j,k}
# sizeX - signal[1] represents the i dimension length
# sizeY - signal[2] represents the j dimension length
# sizeZ - signal[3] represents the k dimension length
# signal[0][i][j][k] - represents the walabot 3D scanned image (internal data)
#Initialize 3Dplot with matplotlib
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim([xMin-1,xMax-1])
ax.set_ylim([yMin-1,yMax-1])
ax.set_zlim([zMin-1,zMax-1])
ax.set_xlabel('X AXIS')
ax.set_ylabel('Y AXIS')
ax.set_zlabel('Z AXIS')
scatterplot = ax.scatter(x, y, z, zdir='z', s=signal[0], c= signal[0])
cbar = plt.colorbar(scatterplot)
cbar.set_label('Density')
#def update(signal):
# ax.clear()
# scatterplot = ax.scatter(x, y, z, zdir='z', s=signal[0], c=signal[0])
ani = anim.FuncAnimation(fig, update(ax, signal, plt), frames=10 , blit=True, repeat = True)
def main():
wlbt = Walabot()
wlbt.connect()
if not wlbt.isConnected:
print("Not Connected")
else:
print("Connected")
wlbt.start()
calc_index(wlbt.get_RawImage_values())
while True:
#print_RawImage_values(wlbt.get_RawImage_values())
calc_RasterImage(wlbt.get_RawImage_values())
wlbt.stop()
if __name__ == '__main__':
main()
あなたがトップから更新機能を必要とする
ani = anim.FuncAnimation(fig, update(ax, signal, plt), frames=10 , blit=True, repeat = True)
を持つ行を見ることができるように。この関数は私のプロットを消去し、異なる値を持つ新しいプロットを再作成します。しかし、私は常に最初にプロットウィンドウを閉じる必要があります。これは避けたいものです。 これはプロットの様子です:
3D array plot with matplotlib scatter あなたはこの問題の解決方法を知っていますか?
歓声
紛失したmcveを批判し、依然として回答を提供するのはちょっと矛盾しているようですが、それ自体には説明がありません。私は、質問の紛らわしさを質問者に思い出させることは、コメントでなければならないと思います。一方、あなたが質問に答えることができれば、なぜmcveが不足しているのか気にしませんか?または、それ以外の方法:なぜ質問が不明な場合に回答を提供するのですか?いずれにしても、コードを投げて「それを理解したい場合は、ドキュメントを読む」と言うのは同じように悪いことです。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest私は彼に最初にドキュメントを読んでから残りの質問をするように頼んだ。私は実際に言ったこととあなたがそれを描写していることの間に違いがあると主張します。 – Paul