Vega-lite 默认条形宽度奇怪

Vega-lite default bar width strange

我看到了以下样式奇怪的图表。我知道我可以显式更改 padding 等,但默认的 vega-lite 布局通常非常好。我很困惑我正在做的事情导致了这种不正常的行为。谢谢! Here is the code in the vega-lite editor

我知道我也可以将 x 的 type 更改为 ordinal 以使样式更好,但我不确定我是否仍然理解我看到的差异的原因。我需要类型是定量的,所以我得到 min/max 笔刷绑定,而不是集合。

此外,在阅读此处的文档后,我什至不知道如何手动设置条形宽度 https://vega.github.io/vega-lite/docs/scale.html。如果有人可能有一个很好的工作示例。

谢谢。

由于您将 "x" 声明为定量字段,因此没有假设沿轴的点是均匀分布的。例如,您可以在其他数据点之间添加一些数据点:

      {"ShareWomen_bin": 0.83, "count": 40, "is_overview": true},
      {"ShareWomen_bin": 0.87, "count": 70, "is_overview": true},

您会看到它们呈现在其他条形之间:

如您所述,您可以指定将条形编码为序数值。另一种解决方案是将其保留为定量的,但指定它是分箱的,在这种情况下,条形图也将呈现为好像它们是有序的:

    "x": {"field": "ShareWomen_bin", "type": "quantitative", "bin": true},

由于您的数据似乎已经装箱,您应该了解 vega-lite 如何支持预先装箱的数据:https://vega.github.io/vega-lite/docs/bin.html#binned

正如@marcprux 所提到的,有预分箱支持,因此您不必在此处重复分箱转换。但是,目前预装箱支持需要 bin_startbin_end

现在您可以修改规范以派生一个新的 bin_end 字段并将其与 x2 一起使用。

{
  "data": ...
  "transform": [{
    "calculate": "datum.ShareWomen_bin+0.1",
    "as": "ShareWomen_bin_end"
  }],
  "mark": "bar",
  "encoding": {
    "x": {"bin": {"binned": true, "step": 0.1}, "field": "ShareWomen_bin", "type": "quantitative", "title": "ShareWomen_bin"},
    "x2": {"field": "ShareWomen_bin_end"},
    "y": {"field": "count", "type": "quantitative"}
  }
}

像这样spec.

我知道我们不应该要求派生 bin_end 因此创建了一个问题来跟踪此功能请求:https://github.com/vega/vega-lite/issues/6086.

顺便说一句,量化比例只影响条形位置。

要直接设置条形尺寸,可以在标记定义中使用尺寸 属性:

mark: {type: "bar", size: 5}