在 Altair 图中用 alt.condition 加粗一些 x 标签
Bold some of the x-labels with alt.condition in Altair plot
如何使用 alt.condition 将某些 x 标签设为粗体?例如,使用以下代码,我尝试将 x-label 'C' 设为粗体,这对应于 y 轴上的最大值 9。
df = pd.DataFrame({'Name': ['A', 'B', 'C', 'D'], 'Value': [1, 5, 9, 2]})
alt.Chart(df).mark_line().encode(
x = alt.X(
'Name:N',
axis = alt.Axis(
labelFontWeight = alt.condition(alt.datum.Value == df.Value.max(), alt.value(800), alt.value(300))
)
),
y = 'Value:Q'
)
奇怪的是,无论我如何更改预测,它总是变为 if-false 值。
Make x-label 'C' bold
我不确定您是否可以直接在 Altair/Vega-Lite 中执行此操作,但您可以计算最大值的名称并与评论中建议的内容进行比较,但使用 [=17 稍微自动化一些=]:
import pandas as pd
import altair as alt
df = pd.DataFrame({'Name': ['A', 'B', 'C', 'D'], 'Value': [1, 5, 9, 2]})
max_name = df['Name'][df['Value'].argmax()]
alt.Chart(df).mark_line().encode(
x=alt.X(
'Name:N',
axis = alt.Axis(
# datum.label also works
labelFontWeight=alt.condition(f"datum.value == '{max_name}'", alt.value(800), alt.value(300))
)
),
y='Value:Q'
)
如何使用 alt.condition 将某些 x 标签设为粗体?例如,使用以下代码,我尝试将 x-label 'C' 设为粗体,这对应于 y 轴上的最大值 9。
df = pd.DataFrame({'Name': ['A', 'B', 'C', 'D'], 'Value': [1, 5, 9, 2]})
alt.Chart(df).mark_line().encode(
x = alt.X(
'Name:N',
axis = alt.Axis(
labelFontWeight = alt.condition(alt.datum.Value == df.Value.max(), alt.value(800), alt.value(300))
)
),
y = 'Value:Q'
)
奇怪的是,无论我如何更改预测,它总是变为 if-false 值。
Make x-label 'C' bold
我不确定您是否可以直接在 Altair/Vega-Lite 中执行此操作,但您可以计算最大值的名称并与评论中建议的内容进行比较,但使用 [=17 稍微自动化一些=]:
import pandas as pd
import altair as alt
df = pd.DataFrame({'Name': ['A', 'B', 'C', 'D'], 'Value': [1, 5, 9, 2]})
max_name = df['Name'][df['Value'].argmax()]
alt.Chart(df).mark_line().encode(
x=alt.X(
'Name:N',
axis = alt.Axis(
# datum.label also works
labelFontWeight=alt.condition(f"datum.value == '{max_name}'", alt.value(800), alt.value(300))
)
),
y='Value:Q'
)