python - Altair:使用字段来指定 Y 轴的域?
问题描述
是否可以使用数据中的字段来指定 Y 轴的域?
我已经尝试过这样的事情,但它不起作用:
scale=alt.Scale(domain = ['field1','field2'])
假设我有一个如下所示的交互式绘图,并且我希望 Y 轴域随着图例中的选择而变化。
import altair as alt
from vega_datasets import data
source = data.unemployment_across_industries.url
source = pd.read_json(source)
source['field1'] = 0
source['field2'] = 20000
selection = alt.selection_multi(fields=['series'], bind='legend')
alt.Chart(source).mark_area().encode(
alt.X('yearmonth(date):T', axis=alt.Axis(domain=False, format='%Y', tickSize=0)),
alt.Y('sum(count):Q', stack='center', scale=alt.Scale(domain = ['field1','field2'])),
alt.Color('series:N', scale=alt.Scale(scheme='category20b')),
opacity=alt.condition(selection, alt.value(1), alt.value(0.2))
).add_selection(
selection
)
解决方案
不,domain
只能设置为一对数字。如果您希望域响应选择,一种方法是使用没有显式域的过滤器转换。例如:
source = data.unemployment_across_industries.url
selection = alt.selection_multi(fields=['series'], bind='legend')
alt.Chart(source).mark_area().encode(
alt.X('yearmonth(date):T', axis=alt.Axis(domain=False, format='%Y', tickSize=0)),
alt.Y('sum(count):Q', stack='center'),
alt.Color('series:N', scale=alt.Scale(scheme='category20b'))
).add_selection(
selection
).transform_filter(selection)
推荐阅读
- mongodb - MongoDB 使用同一对象数组的另一个字段的值更新数组对象
- java - 写两个指令作为流
- javascript - 使用 react-router-v5 登录时重定向页面
- prestashop - Prestashop 从 1.7.1.2 升级到新版本
- r - 如何在 React Native 中通过 Redux 使用多个数组来存储状态值
- javascript - 根据对象数组内的对象条件返回布尔值
- c# - Quickbooks Online Api SDK c# - 有没有办法使用 api 为账单创建和更新隐藏的自定义字段
- java - 让 JMS 消费者保持活动状态以获取消息
- python - 加载带有自定义层的模型时出现 Keras TypeError
- flutter - 包装 Column 时 SingleChildScrollView 无法正常工作