首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Altair滑块变换数据

Altair滑块变换数据
EN

Stack Overflow用户
提问于 2018-08-17 23:14:57
回答 1查看 1.9K关注 0票数 1

几个星期以来,我一直很享受使用牛郎星,但我一直在思考如何解决问题。我一直试图做一个简单的图,平均温度数据与月,并使用滑块小部件过滤多年。我可以让绘图工作,但一旦我使用滑块选项,它就不会显示任何数据。我试过使用选择选项,但没有成功。我只是不知道如何处理转换选项。我以美国人口为例,随着时间的推移作为指南。

代码语言:javascript
复制
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()
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-18 03:49:55

CSV数据被解析为字符串而不是数字。当您使用滑块选择日期(例如1959)时,它是对数据进行筛选,以检查哪些值等于该日期。由于数据是字符串,所以"1959" != 1959及其结果子集是空的。

您可以强制将列解析为数字,然后滑块将正确工作。例如:

代码语言:javascript
复制
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
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51903865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档