Vega Edge bundling(定向)——改变每条边的厚度以显示连接强度

Vega Edge bundling (directed) - vary thickness of each edge to show strength of connection

我希望按照以下方式使用边束可视化:

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

然而,在这个例子中,所有有向边的厚度都是均匀的。

相反,我需要生成不同厚度的边来说明节点之间关系的强度。

我设想将该厚度传递到模型中,这样由 JSON 定义的边缘位于 https://github.com/vega/vega-datasets/blob/master/data/flare-dependencies.json

将进行调整,因此边缘当前定义为:

  {
    "source": 190,
    "target": 4
  },

将改为定义为:

  {
    "source": 190,
    "target": 4,
    "edgeWeight": 23
  },

这可能吗?我确实尝试通过使用值传递两个简化的 JSON 数据集来进行试验,但无法弄清楚如何将“edgeWeight”变量输入到 'marks'.

中的行定义中

你知道我该怎么做吗?

此致,

西蒙

我得到的答案如下:

首先添加一个公式,将 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 之前对其进行缩放。