gpt4 book ai didi

Python:Altair:有条件地更改轴标签外观(颜色、不透明度)

转载 作者:行者123 更新时间:2023-12-05 02:41:27 26 4
gpt4 key购买 nike

目前,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')))),

有没有办法将标签外观与选择(此处:绑定(bind)到图例)联系起来?

最佳答案

没有找到动态更改轴标签的方法,但通过 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
)

Shows brief animation selecting labels which is being reflected not only in the bars but in the axis labels as well

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

关于Python:Altair:有条件地更改轴标签外观(颜色、不透明度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68113954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com