altair - 在 Altair 中格式化 mark_text 的文本

标签 altair

我正在尝试按照 Multi-Line Tooltip example 的方式创建一个图表,但我想格式化正在打印的字符串以在末尾添加一些文本。我正在尝试修改这部分:

# Draw text labels near the points, and highlight based on selection
text = line.mark_text(align='left', dx=5, dy=-5).encode(
    text=alt.condition(nearest, 'y:Q', alt.value(' '))
)

具体来说,我想要的不是“y:Q”,而是“y:Q”+“后缀”。我试过做这样的事情:
# Draw text labels near the points, and highlight based on selection
text = line.mark_text(align='left', dx=5, dy=-5).encode(
    text=alt.condition(nearest, 'y:Q', alt.value(' '), format=".2f inches")
)

或者,我试过:
# Draw text labels near the points, and highlight based on selection
y_fld = 'y'
text = line.mark_text(align='left', dx=5, dy=-5).encode(
    text=alt.condition(nearest, f"{y_fld:.2f} inches", alt.value(' '))
)

我想我明白为什么那些不起作用,但我无法弄清楚如何拦截 y 的值并将其通过格式字符串传递。谢谢!

最佳答案

我认为最简单的方法是使用 transform_calculate 计算一个新字段计算你想要的标签。
使用文档中的示例,我会像这样更改文本图表:

text = line.mark_text(align='left', dx=5, dy=-5).encode(
    text=alt.condition(nearest, 'label:N', alt.value(' '))
).transform_calculate(label='datum.y + " inches"')
这导致了这个图表:
enter image description here
如果你想要更多的控制,你可以事先用 Pandas 更改数据集。确保将类型设置为 Nominal(而不是 Quantitative),否则你会得到 NaN s 在工具提示中。

关于altair - 在 Altair 中格式化 mark_text 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484548/

相关文章:

python - 在 Altair 中生成 "dodged"或 "side-by-side"条形图/柱形图?

python - 如何移除如图所示的 Altair yaxis?

python-3.x - Altair 有 slider "play button"吗?

python - Altair:指定默认启用的渲染器

python - 如何在 altair 中安装新字体并在 alt.TitleParams 中指定它

python - Altair LOESS 拟合值低于平均值,远低于线性回归

python - Altair 中的多线图 - 数据格式?

python-3.x - Altair 为交互式散点图 jar 添加日期 slider

python - 交互式 plotly 的 plotly 表达与Altair/Vega-Lite的 plotly 比较

python - Altair 置信区间图