However, the downside is that this matplotlib plotting does not provide much room to tweak the chart, e.g. fixing axis limits, naming axis titles. So I decided to try altair instead.
Altair has much more options to tweak the chart by customising the figure before loading into st.altair_chart, but the problem comes about when I want the chart to reload whenever new data is appending. I cant just chart.add_rows anymore.
So the question is, how can I reload altair charts when new data is added to the dataframe?
Ok, I found the solution myself after looking through some of streamlit’s demos. The trick is to use st.empty() to define a fixed frame to reload on.
Hope this will be helpful to other users. It will be good if the documentation itself give an example on reloading of other charts besides the ones by matplotlib like st.line_chart.
numpy as np
import altair as alt
chart_row = st.empty()
for i in range(100):
df = pd.DataFrame(
np.random.randn(100, 3),
columns=['a', 'b', 'c'])
c = alt.Chart(df).mark_circle().encode(
x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])
chart_row.altair_chart(c, use_container_width=True)