数据过滤器适用于json数据,但不适用于csv数据

问题描述 投票:1回答:1

this vega图表中,如果我使用以下flare-dependencies.json命令下载并将jq转换为csv,

jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' flare-dependencies.json > flare-dependencies.csv

并从以下位置更改edge-bundling.vg.json文件中的相应数据属性:

{
  "name": "dependencies",
  "url": "data/flare-dependencies.json",
  "transform": [
    {
      "type": "formula",
      "expr": "treePath('tree', datum.source, datum.target)",
      "as": "treepath",
      "initonly": true
    }
  ]
},

to

{
  "name": "dependencies",
  "url": "data/flare-dependencies.csv",
  "format": { "type": "csv" },
  "transform": [
    {
      "type": "formula",
      "expr": "treePath('tree', datum.source, datum.target)",
      "as": "treepath",
      "initonly": true
    }
  ]
},

悬停效果不起作用(当我悬停边缘/节点时,颜色不会改变。

我怀疑这是本节的问题:

  "name": "selected",
  "source": "dependencies",
  "transform": [
    {
      "type": "filter",
      "expr": "datum.source === active || datum.target === active"
    }
  ]

我想念的是什么?我该如何解决?

d3.js vega vega-lite
1个回答
1
投票

JSON数据已输入;也就是说,文件格式区分字符串数据和数字数据。 CSV数据未输入类型:所有条目均以字符串表示。

以上图表规格要求某些字段为数字。将输入数据转换为CSV时,必须添加format说明符以为数字数据列指定数字类型。

对于此图表,您可以将以下内容用于节点数据:

"format": {
  "type": "tsv",
  "parse": { "id": "number", "name": "string", "parent": "number" }
},

以及以下链接数据:

"format": {
  "type": "tsv",
  "parse": { "source": "number", "target": "number" }
},
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.