0

我想实现这一点:

"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "mark": {"type": "bar", "tooltip": true},
  "encoding": {

    "x": {"field": "Creative Type", "type": "nominal", "aggregate": null},
    "y": {"field": "Creative Type", "type": "nominal", "aggregate": "count"}

我将值从 Python 传递给 vegalite。由于 Python 没有 null 关键字,我不知道如何在 x 轴上将聚合的值设置为 null。任何帮助是极大的赞赏。谢谢!

4

2 回答 2

0

Python 中 null 关键字的等效项将为 None。请检查是否有效。

于 2021-02-16T10:19:46.470 回答
0

一般来说,传入NonePython/Altair 将导致nullJSON/vega。例如,在隐藏图例时("legend": null在 Vega-Lite 中),您可以legend=None在 Altair 中使用,如调整图例中所述

然而,在聚合的情况下,这是行不通的:根据 Vega-Lite 模式,null不是 的有效参数aggregate,因此在 Altair 中尝试此操作将导致SchemaValidationError.

如果出于某种原因你真的想产生这个无效的规范,你可以通过传递validate=Falsealt.Chart.to_json

import altair as alt
chart = alt.Chart().mark_bar(tooltip=True).encode(
    x=alt.X('Creative Type:N', aggregate=None),
    y=alt.Y('Creative Type:N', aggregate='count')
)
print(chart.to_json(validate=False))
# {
#   "$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json",
#   "config": {
#     "view": {
#       "continuousHeight": 300,
#       "continuousWidth": 400
#     }
#   },
#   "encoding": {
#     "x": {
#       "aggregate": null,
#       "field": "Creative Type",
#       "type": "nominal"
#     },
#     "y": {
#       "aggregate": "count",
#       "field": "Creative Type",
#       "type": "nominal"
#     }
#   },
#   "mark": {
#     "tooltip": true,
#     "type": "bar"
#   }
# }
于 2021-02-16T14:10:42.457 回答