Hi
I’m trying to set custom scales to a time axis in an altair chart. It used to work fine, until I updated to streamlit version 1.15.0
import streamlit as st
import pandas as pd
import altair as alt
from vega_datasets import data
temps = data.seattle_temps()
temps = temps[ temps.date.dt.hour == 10 ]
startDate = pd.to_datetime("2010-06-01")
endDate = pd.to_datetime("2010-06-30")
myScale = alt.Scale(domain=[startDate, endDate], )
c = alt.Chart(temps).mark_line(clip=True).encode(
x=alt.X('date:T', scale=myScale),
y='temp:Q'
)
st.altair_chart( c )
c.show()
Hi @xavierc, thanks for posting in the forum! I believe this is a bug – you’ve pointed out correctly (and I’ve verified) that this works in Streamlit 1.13 but not in >=1.14. I’ve filed a bug here and you can follow as it gets resolved.
Hey @xavierc, I wanted to follow up on this – it turns out that this is a bug in Altair – not Streamlit specifically. I gave it a spin in a jupyter notebook and a colab notebook (removing any Streamlit code) and the chart is also blank there. I encourage you to give it a try. We are going to file a bug for Altair and hopefully, they can fix it!
Hi @TylerS, do you have a minimal example reproducing the Altair bug?/Altair bug report yet? I’m a little confused how a Streamlit version change exposed an Altair regression. Does Streamlit use a pinned Altair version and did they increment it?
I think Streamlit changed how they evaluate Altair calls with the upgrade to 1.14.
import altair as alt
import pandas as pd
from vega_datasets import data
import datetime
temps = data.seattle_temps()
temps = temps[temps.date.dt.hour == 10]
startDate = pd.to_datetime("2010-06-01")
endDate = pd.to_datetime("2010-06-30")
myScale = alt.Scale(domain=[startDate, endDate])
c = (alt.Chart(temps)
.mark_line(clip=True)
.encode(x=alt.X("temp:T", scale=myScale), y="temp:Q"))
c```