在 Vega 边缘捆绑中设置单独的边缘宽度

set individual edge widths in Vega edge bundling

我正在尝试使用边束,但希望边的厚度由边本身决定,而不是它们源自的源节点。

文档中给出的示例在这里:

https://vega.github.io/editor/#/examples/vega/edge-bundling

两个数据源在这里:

https://github.com/vega/vega-datasets/blob/master/data/flare-dependencies.json

https://github.com/vega/vega-datasets/blob/master/data/flare.json

在此示例中,边缘的厚度由脚本中的第 170 行确定,其中值 1.5 分配给 'strokeWidth'。

          "encode": {
            "enter": {
              "interpolate": {"value": "bundle"},
              "strokeWidth": {"value": 1.5}
            },

我曾希望使用 flare.json 输入中的“大小”值来分别定制每个宽度。但是,该示例从 flare-dependencies.json 创建了一棵树,虽然树确实引入了这个值,在 VEGA_DEBUG.view.data('dependencies') 中可见,但我不知道如何访问它并获取这些值来设置每个边缘的 'strokeWidth' 个元素。

你能告诉我该怎么做吗?

此致,

我得到的答案如下:

首先添加一个公式,将 flare.json 数据集中的大小值附加为字段 'strokeWidth',方法是在示例的第 90 行写入:

{
    "type": "formula",
    "expr":  datum.size/10000",
    "as": "strokeWidth"
},

接下来,在标记中,将 edgebundle 中每条边的 strokeWidth 值设置为关联的 'strokeWidth' 列中的相关联 'strokeWidth' 通过在上述更改后的第 176 行编写:

"strokeWidth": {"field": "strokeWidth"}

在此之后,图表应呈现出具有由 'size' 变量定义的厚度的边缘。请注意,在此示例中,我必须将原始数据集中的 'size' 值缩放 10,000 以将线条设置为合理的粗细。

实际上,我会在将数据呈现给 Vega 之前对其进行缩放。