#3396·altair

是否淘汰 `to_html()`? 或者让它与 Vegafusion 兼容?

作者: joelostblom创建于 2024年4月7日更新于 2026年9月17日
标签bug

发生了什么情况?

我无意中混淆了 to_html()save,并注意到在使用 to_html 并启用 vegafusion 数据转换器时,我遇到了以下错误:

ValueError: 当启用 "vegafusion" 数据转换器时,必须使用 format="vega" 方式调用 to_dict() 和 to_json() 图表方法。例如: 
    >>> chart.to_dict(format="vega")
    >>> chart.to_json(format="vega")
python
import altair as alt
import pandas as pd
alt.data_transformers.enable('vegafusion')

source = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x='a',
    y='b'
).to_html()

您希望发生什么情况呢?

而不是 硬编码 to_dict() 不带参数和 mode='vegalite',我们可以允许在 to_html() 方法中传递这些参数的参数。模式可以称为 mode,字典选项可以是 formatdict_kwds,类似于我们对 json_kwds 的处理。可以通过 embed_options 覆盖 mode,但我认为显式的参数会更清晰一些。