几个星期以来,我一直很享受使用牛郎星,但我一直在思考如何解决问题。我一直试图做一个简单的图,平均温度数据与月,并使用滑块小部件过滤多年。我可以让绘图工作,但一旦我使用滑块选项,它就不会显示任何数据。我试过使用选择选项,但没有成功。我只是不知道如何处理转换选项。我以美国人口为例,随着时间的推移作为指南。
import altair as alt
from altair.expr import datum, if_
alt.renderers.enable('notebook')
path = 'https://raw.githubusercontent.com/SpiritR/datpr6754/master/prtas_1901_2015.csv'
slider = alt.binding_range(min=1900, max=2020, step=10)
year = alt.selection_single(name="year", fields=['Year'], bind=slider)
alt.Chart(path).mark_bar().encode(
alt.X('Month_Name:O'),
alt.Y('tas:Q', scale=alt.Scale(domain=(20, 28))),
).properties(
width=900,
height=300,
).add_selection(
year
).transform_calculate(
????
).transform_filter(
year.ref()
)发布于 2018-08-18 03:49:55
CSV数据被解析为字符串而不是数字。当您使用滑块选择日期(例如1959)时,它是对数据进行筛选,以检查哪些值等于该日期。由于数据是字符串,所以"1959" != 1959及其结果子集是空的。
您可以强制将列解析为数字,然后滑块将正确工作。例如:
import altair as alt
alt.renderers.enable('notebook')
path = 'https://raw.githubusercontent.com/SpiritR/datpr6754/master/prtas_1901_2015.csv'
data = alt.UrlData(url=path, format=alt.CsvDataFormat(parse={'Year': 'number'}))
slider = alt.binding_range(min=1901, max=2015, step=1)
year = alt.selection_single(name="year", fields=['Year'], bind=slider)
alt.Chart(data).mark_bar().encode(
alt.X('Month_Name:O'),
alt.Y('tas:Q', scale=alt.Scale(domain=(20, 28))),
).properties(
width=900,
height=300,
).add_selection(
year
).transform_filter(
year
)https://stackoverflow.com/questions/51903865
复制相似问题