我可以让它看起来更像箱形图吗

Can I make it look more like a box plot

我正在使用提供最小值、最大值、Q1、Q2 和 Q3 数据的 Elasticsearch。我所要做的就是以箱形图的形式绘制它。 Kibana 截至目前仅支持 vega-lite 版本 2.6.0 和 vega 4.3.0。

这是我制作的完整示例。

{
  "$schema": "https://vega.github.io/schema/vega-lite/v2.json",
  "width": 100,
  "height": 200,
  "padding": 10,
 

  "data": {
    "name": "sample",
    "values": [
      {
      "task": "A", 
      "min" : 72.66500091552734,
      "max" : 139.54299926757812,
      "q1" : 98.68599700927734,
      "q2" : 120.12850189208984,
      "q3" : 121.82099914550781
      },
      {
      "task": "B", 
      "min" : 71.66500091552734,
      "max" : 159.54299926757812,
      "q1" : 88.68599700927734,
      "q2" : 110.12850189208984,
      "q3" : 141.82099914550781
      },
      {
      "task": "c", 
      "min" : 45.66500091552734,
      "max" : 169.54299926757812,
      "q1" : 88.68599700927734,
      "q2" : 110.12850189208984,
      "q3" : 141.82099914550781
      }
    ]
  },
  
  "layer": [
    {
      "width": 5,
      "encoding": {
        "x": {"type": "ordinal","field": "task"},
        "y": {"type": "quantitative","field": "min"},
        "y2": {"type": "quantitative","field": "max"},
        "color": {"value": "#2CB5E8"}
      },
      "mark": {
        "type": "bar"
      }
    },
    {
      "width": 20,
      "encoding": {
        "x": {"type": "ordinal","field": "task"},
        "y": {"type": "quantitative","field": "q1"},
        "y2": {"type": "quantitative","field": "q3"},
        "color": {"value": "#EB985E"}
      },
      "mark": "bar"
    },
    {
      "encoding": {
        "x": {"type": "ordinal","field": "task"},
        "y": {"type": "quantitative","field": "q2"},
        "color": {"value": "#090502"}
      },
      "mark": "point"
    }
  ]
}

剧情是这样的:

但箱形图看起来像这样

当前版本的 vega-lite 支持箱线图。但我坚持使用旧版本。

我正在尝试减小最小值和最大值条形图的宽度。并为 Q1 和 Q3 保持厚实。不知何故它不起作用。

是否可以将 Q2 绘制为一条直线而不是一个点?

您可以使用带有条形图、刻度线和标尺标记的层状图手动构建箱线图。例如 (view in editor):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v2.json",
  "width": 100,
  "height": 200,
  "data": {
    "name": "sample",
    "values": [
      {
        "task": "A",
        "min": 72.66500091552734,
        "max": 139.54299926757812,
        "q1": 98.68599700927734,
        "q2": 120.12850189208984,
        "q3": 121.82099914550781
      },
      {
        "task": "B",
        "min": 71.66500091552734,
        "max": 159.54299926757812,
        "q1": 88.68599700927734,
        "q2": 110.12850189208984,
        "q3": 141.8209991455078
      },
      {
        "task": "c",
        "min": 45.66500091552734,
        "max": 169.54299926757812,
        "q1": 88.68599700927734,
        "q2": 110.12850189208984,
        "q3": 141.8209991455078
      }
    ]
  },
  "layer": [
    {
      "encoding": {
        "x": {"type": "ordinal", "field": "task"},
        "y": {"type": "quantitative", "field": "min"},
        "y2": {"type": "quantitative", "field": "max"}
      },
      "mark": {"type": "rule", "color": "black"}
    },
    {
      "encoding": {
        "x": {"type": "ordinal", "field": "task"},
        "y": {"type": "quantitative", "field": "q1"},
        "y2": {"type": "quantitative", "field": "q3"}
      },
      "mark": {"type": "bar", "color": "#EB985E", "size": 20}
    },
    {
      "encoding": {
        "x": {"type": "ordinal", "field": "task"},
        "y": {"type": "quantitative", "field": "q2"}
      },
      "mark": {"type": "tick", "color": "gray", "size": 20}
    }
  ]
}