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 之前对其进行缩放。
我希望按照以下方式使用边束可视化:
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 之前对其进行缩放。