2

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...

Community
  • 1
  • 1
Roger Hache
  • 405
  • 1
  • 5
  • 17

1 Answers1

5

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):

plot

adrianus
  • 3,141
  • 1
  • 22
  • 41
  • This is a great example! Thank you! I just want to point out some problems. (1) The program runs slower and slower as it is animating the graph. (2) The bars are somehow being superimposed, so only the biggest value of `dz` is represented, not the current value. That can be seen by replacing `dz[i] += 0.1` by `dz[i] -= 0.1`. – Roger Hache Feb 17 '16 at 17:58
  • If you put bars[i].remove() before ``bars[i] = ax.bar3d(xpos[i], ..." it works in either dz[i] -= 0.1 or dz[i] += 0.1. – user3644627 Jul 26 '18 at 12:20
  • And you can put dz[i] += random.choice([-0.1, 0.1]) in place of dz[i] += 0.1 for a better test. – user3644627 Jul 26 '18 at 12:36