【问题标题】:Python: Altair: Conditionally change axis label appearance (color, opacity)Python:Altair:有条件地更改轴标签外观(颜色、不透明度)
【发布时间】:2021-09-07 20:12:53
【问题描述】:

目前,Vega 不支持交互式轴标签,即通过单击轴标签创建选择(参见issue 1657),Altair 也不支持。

因此,我试图通过提供图例选择和更改轴标签的外观来找到解决方法。

我可以有条件地为标签着色(参见下面的代码示例)。

import altair as alt
from vega_datasets import data
source = data.unemployment_across_industries.url

selection = alt.selection_multi(fields=['series'], bind='legend')

alt.Chart(source).mark_bar().encode(
alt.X('series:N', axis=alt.Axis(labelColor=alt.condition('datum.value == "Finance"', alt.value('red'), alt.value('black')))),
alt.Y('sum(count):Q'),
alt.Color('series:N', scale=alt.Scale(scheme='category20b')),
opacity=alt.condition(selection, alt.value(1), alt.value(0.2))
).add_selection(
    selection
)

但是,当我尝试使用选择而不是表达式时出现错误。

alt.X('series:N', axis=alt.Axis(labelColor=alt.condition(selection, alt.value('red'), alt.value('black')))),

有没有办法将标签外观连接到选择(这里:绑定到图例)?

【问题讨论】:

    标签: python visualization altair vega-lite vega


    【解决方案1】:

    没有找到动态更改轴标签的方法,但通过mark_text显示轴标签设法接近解决方案

    bars = alt.Chart(source).mark_bar().encode(
        alt.X('series:N', axis=alt.Axis(labels=False, title="")),
        alt.Y('sum(count):Q'),
        alt.Color('series:N', scale=alt.Scale(scheme='category20b')),
        opacity=alt.condition(selection, alt.value(1), alt.value(0.2))
    ).add_selection(
        selection
    )
    
    labels = alt.Chart(source).mark_text(align='right', angle=270).encode(
        alt.X('series:N', axis=None),
        text='series:N',
        opacity=alt.condition(selection, alt.value(1), alt.value(0.2))
    ).transform_aggregate(
        groupby=["series"]
    )
    
    (bars & labels).configure(
        concat=alt.CompositionConfig(spacing=0)
    ).configure_view(
        strokeWidth=0
    )
    

    (仍然很想了解更好的解决方案。)

    【讨论】:

      猜你喜欢
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2016-06-20
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多