altair - Altair中mark_text的格式文本
问题描述
我正在尝试按照Multi-Line Tooltip 示例的线条创建一个图表,但我想格式化正在打印的字符串以在末尾添加一些文本。我正在尝试修改这部分:
# 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"')
如果您想要更多控制权,您可以预先使用 pandas 更改数据集。请务必将类型设置为标称(而不是定量),否则您会NaN
在工具提示中获得 s。
推荐阅读
- javascript - UTF-8 编码算法如何处理 8 位块(在 JavaScript 中)?
- laravel - 查询 Laravel 嵌套关系 [Laravel 6.x]
- python - 自动化我在 python 中的命令后插入的路径
- mysql - SQL问题:内连接给了我空数据集
- javascript - (javascript) 本地存储值 -> 我可以更改对象的顺序吗?
- transactions - 交易收据日志为空以太坊
- laravel - Laravel 6 中多用户应用程序的不同用户创建的跟踪记录
- javascript - ReactJS event.preventDefault(); 不是函数
- javascript - 从 React 中的渲染组件中提取元素数组
- python - 一个基类的方法调用同一个基类中定义的另一个方法,最终可能会调用一个派生类的方法来覆盖它