Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Answer: Animating a Matplotlib chart
import matplotlib.pyplot as plt
import numpy as np
import streamlit as st
import time
fig, ax = plt.subplots()
max_x = 5
max_rand = 10
x = np.arange(0, max_x)
ax.set_ylim(0, max_rand)
line, = ax.plot(x, np.random.randint(0, max_rand, max_x))
the_plot = st.pyplot(plt)
def init(): # give a clean slate to start
line.set_ydata([np.nan] * len(x))
def animate(i): # update the y values (every 1000ms)
line.set_ydata(np.random.randint(0, max_rand, max_x))
the_plot.pyplot(plt)
init()
for i in range(100):
animate(i)
time.sleep(0.1)
@treuille

This comment has been minimized.

Copy link
Owner Author

treuille commented Oct 4, 2019

Created in response to this question.

@DavidS3141

This comment has been minimized.

Copy link

DavidS3141 commented Mar 30, 2020

With newer streamlit versions starting from 0.52.2 and upwards, you need to provide the clear_figure=False flag to both .pyplot(plt) calls. More on this in this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.