You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altair图表:如何隐藏或降低数值小于50的文本透明度?

如何隐藏Altair图表中数值小于50的文本标签?

可以通过条件编码实现需求,两种常用方式任选其一即可:

方法1:仅显示数值≥50的文本

通过alt.condition()判断,当分组产量总和小于50时返回空字符串,直接不生成文本标签:

import altair as alt
from vega_datasets import data
import streamlit as st

source=data.barley()

bars = alt.Chart(source).mark_bar().encode(
    x=alt.X('sum(yield):Q', stack='zero'),
    y=alt.Y('variety:N'),
    color=alt.Color('site')
)

text = alt.Chart(source).mark_text(dx=-15, dy=3, color='white').encode(
    x=alt.X('sum(yield):Q', stack='zero'),
    y=alt.Y('variety:N'),
    detail='site:N',
    # 条件判断:总和≥50时显示格式化数值,否则显示空串
    text=alt.condition(
        alt.datum.yield_sum >= 50,
        alt.Text('sum(yield):Q', format='.1f'),
        alt.value('')
    )
).transform_aggregate(
    yield_sum='sum(yield)',  # 提前计算分组总和,简化条件判断
    groupby=['variety', 'site']
)

st.altair_chart(bars + text, theme="streamlit", use_container_width=True)

方法2:将数值<50的文本透明度设为0

如果需要保留文本元素但隐藏视觉效果,可通过条件设置透明度:

import altair as alt
from vega_datasets import data
import streamlit as st

source=data.barley()

bars = alt.Chart(source).mark_bar().encode(
    x=alt.X('sum(yield):Q', stack='zero'),
    y=alt.Y('variety:N'),
    color=alt.Color('site')
)

text = alt.Chart(source).mark_text(dx=-15, dy=3, color='white').encode(
    x=alt.X('sum(yield):Q', stack='zero'),
    y=alt.Y('variety:N'),
    detail='site:N',
    text=alt.Text('sum(yield):Q', format='.1f'),
    # 条件设置透明度:总和≥50时显示,否则完全透明
    opacity=alt.condition(
        alt.datum.yield_sum >= 50,
        alt.value(1),
        alt.value(0)
    )
).transform_aggregate(
    yield_sum='sum(yield)',
    groupby=['variety', 'site']
)

st.altair_chart(bars + text, theme="streamlit", use_container_width=True)

关键说明

  • transform_aggregate()用于提前计算每个品种+站点分组的产量总和,避免重复计算并简化条件逻辑;
  • alt.condition()是Altair实现条件可视化的核心工具,支持基于数据字段的灵活判断;
  • 两种方法视觉效果一致,方法1直接移除文本元素,方法2保留元素但隐藏显示,可按需选择。

内容的提问来源于stack exchange,提问作者volkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:15:43