<div dir="ltr">On Wed, Jun 14, 2017 at 1:43 PM, David J Pine <span dir="ltr"><<a href="mailto:djpine@gmail.com" target="_blank">djpine@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I am having a problem animating a histogram and movie at the same time using matplotlib.animation.<wbr>ArtistAnimation.<div><br></div><div>The first program below, which makes an animated histogram using the "bar" routine works fine.  If I substitute the two lines commented out for the two lines preceding those lines, it still works fine (using "plot" instead of 'bar").  For reasons that are not clear to me, I need make a list (ims) for animation for the histogram using the "bar" routine, and a list of lists for animation of the simple "plot" routine.<div><br></div><div>There is a more serious problem with the second routine where I simultaneously animate a sequence of images using imshow and also try to make an animated histogram.  It works fine if I plot the "histogram" using the "plot" routine but does not work if I use the "bar" routine.  Can someone offer some help?</div><div><br></div><div>I am running these on OSX 10.12.5, Python 3.5.2 or Python 3.6.1, and matplotlib 2.0.0 or 2.0.2</div></div></div></blockquote><div><br></div><div><br></div><div>David,</div><div><br></div><div>Thanks for the complete examples, it made figuring this out really quick. ArtistAnimation expects to be given a list of lists (or tuples), where the inner collection contains all of the artists that should be rendered for a given frame. In the case of bar, it returns a BarCollection object (which I just learned), is a subclass of tuple. This explains why it works (by itself), when directly appended to the list given to ArtistAnimation; the BarCollection acts as the collection of artists that ArtistAnimation is expecting. In the case of the second example, ArtistAnimation is being given a list([BarCollection, Image]); because BarCollection isn't actually an Artist, it causes the problem. What you should try is:</div><div><br></div><div>ims.append([im1] + list(im2))</div><div><br></div><div>This converts the BarCollection to a list of the individual Bar artists, and adds to the list containing the image; ArtistAnimation can understand this and it seems to work fine on my system.</div><div><br></div><div>Ryan</div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Ryan May<br><br></div></div></div>
</div></div>