我目前想要将3D-rawdata从我的Walabot设备中可视化,并将其显示在使用matplotlib FuncAnimation创建的3D动画中。我已经搜索了答案,但找不到有用的东西。 在我的情况下,我已经有了一个3维数组,每个索引都有一个特定的值,随时间变化。我已经可以弄清楚如何在不同颜色和尺寸的3D图表中显示它,但现在我想更新自己。我发现一些示例代码给了我一个很好的开始,但是我的图表并没有自行更新。我必须关闭窗口,然后窗口再次弹出3D数组中的不同值。你们知道如何解决这个问题吗? 这里是我到目前为止的代码:Matplotlib python 3D数组值的动画
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似乎有点矛盾,仍然提供了一个答案,而答案本身没有任何解释。我想提醒提问者缺少问题的清晰度应该是一个评论;另一方面,如果你能回答这个问题,为什么还要担心这个问题?或者相反:如果问题不清楚,为什么要提供答案?无论如何,抛出一段代码,然后说“如果你想了解它,阅读文档”同样很糟糕。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest我让他先阅读文档_first_,然后询问其余的问题。我会争辩说,我实际上所说的和你如何描绘它有区别。 – Paul