Example of animated 3D bar-chart using matplotlib.animation in Python

北城以北 提交于 2019-12-22 01:36:10

问题


I've seen a few nice examples of use of matplotlib.animation module, including this animated 3D plot example. I'm wondering if this animation module can be used with a bar3d chart.

Can someone generates a simple example of that?

Note: I'm currently working on a different solution that doesn't include matplotlib.animation (see my other post) but this appears to be too slow...


回答1:


Here's a small example with 2x2 bars which will be growing and changing color randomly, one at a time when update_bars() is called:

import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation
import random

def update_bars(num, bars):
    i = random.randint(0, 3)
    dz[i] += 0.1
    bars[i] = ax.bar3d(xpos[i], ypos[i], zpos[i], dx[i], dy[i], dz[i], color=random.choice(['r', 'g', 'b']))
    return bars

fig = plt.figure()
ax = p3.Axes3D(fig)
xpos = [1, 1, 3, 3]
ypos = [1, 3, 1, 3]
zpos = [0, 0, 0, 0]
dx = [1, 1, 1, 1]
dy = [1, 1, 1, 1]
dz = [3, 2, 6, 5]

# add bars
bars = []
for i in range(4):
    bars.append(ax.bar3d(xpos[i], ypos[i], zpos[i], dx[i], dy[i], dz[i], color=random.choice(['r', 'g', 'b'])))
ax.set_title('3D bars')

line_ani = animation.FuncAnimation(fig, update_bars, 20, fargs=[bars], interval=100, blit=False)
plt.show()

Output (not animated here):



来源:https://stackoverflow.com/questions/35455041/example-of-animated-3d-bar-chart-using-matplotlib-animation-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!