簡體   English   中英

Python:Altair:有條件地更改軸標簽外觀(顏色、不透明度)

[英]Python: Altair: Conditionally change axis label appearance (color, opacity)

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

有沒有辦法將標簽外觀連接到選擇(這里:綁定到圖例)?

沒有找到動態更改軸標簽的方法,但設法通過通過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
)

顯示選擇標簽的簡短動畫,不僅反映在條形圖中,還反映在軸標簽中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM