当前位置: 首页 > 知识库问答 >
问题:

如何在vega中访问嵌套json

范志勇
2023-03-14

{“_index”:“pie”,“_type”:“flare”,“_id”:“2”,“_version”:1,“_score”:1,“_source”:{“id”:2,“父级”:1,“data”:{“memory”:50}}}

{
 "$schema": "https://vega.github.io/schema/vega/v3.json",
 "data": [
{
  "name": "table",
  "url": {

  "%context%": "true",

  "index": "pie*",

  "body": {

    "size": "10000"


  }
},

"format": { "property": "hits.hits" },

"transform": [
    {
      "type": "formula",
      "expr": "toNumber(datum[\"_source\"][\"data\"][\"memory\"])",
      "as": "memory"
    }
          ],
  "transform": [{"type": "pie", "field": "memory"}]
  }  ],

      "scales": [
      {
  "name": "r",
  "type": "sqrt",
      "domain": {"data": "table", "field": "memory"},
  "zero": true,
  "range": [20, 100]
  }
     ],

  "marks": [
{
  "type": "arc",
  "from": {"data": "table"},
  "encode": {
    "enter": {
      "x": {"field": {"group": "width"}, "mult": 0.5},
      "y": {"field": {"group": "height"}, "mult": 0.5},
      "startAngle": {"field": "startAngle"},
      "endAngle": {"field": "endAngle"},
      "innerRadius": {"value": 20},
      "outerRadius": {"scale": "r", "field": "memory"},
      "stroke": {"value": "#fff"}
    },
    "update": {
      "fill": {"value": "#ccc"}
    },
    "hover": {
      "fill": {"value": "skyblue"}
    }
  }
       },

    {
  "type": "text",
  "from": {"data": "table"},
  "encode": {
    "enter": {
      "x": {"field": {"group": "width"}, "mult": 0.5},
      "y": {"field": {"group": "height"}, "mult": 0.5},
      "radius": {"scale": "r", "field": "memory", "offset": 8},
      "theta": {"signal": "(datum.startAngle + datum.endAngle)/2"},
      "fill": {"value": "#000"},
      "align": {"value": "center"},
      "baseline": {"value": "middle"},
      "text": {"field": "memory"}
    }
  }
}
  ]   
    }

共有1个答案

鲁永福
2023-03-14

这个问题已经在https://github.com/vega/vega/issues/1371中得到了回答

您已经在您的数据变量中定义了“format”:{“property”:“hits.hits”},我在您的数据中看不到它。即使是这样,根据我的理解,property也不接受双嵌套参数(例如varx.variy),但我可能错了。

接下来,在一个data规范中有两个transform定义。

{
  "$schema": "https://vega.github.io/schema/vega/v4.json",
  "data": [
    {
      "name": "table",
      "values": [
        {
          "_index": "pie",
          "_type": "flare",
          "_id": "2",
          "_version": 1,
          "_score": 1,
          "_source": {"id": 2, "parent": 1, "data": {"memory": 50}}
        }
      ],
      "transform": [
        {
          "type": "formula",
          "expr": "toNumber(datum[\"_source\"][\"data\"][\"memory\"])",
          "as": "memory"
        },
        {"type": "pie", "field": "memory"}
      ]
    }
  ],
  "scales": [
    {
      "name": "r",
      "type": "sqrt",
      "domain": {"data": "table", "field": "memory"},
      "zero": true,
      "range": [20, 100]
    }
  ],
  "marks": [
    {
      "type": "arc",
      "from": {"data": "table"},
      "encode": {
        "enter": {
          "x": {"field": {"group": "width"}, "mult": 0.5},
          "y": {"field": {"group": "height"}, "mult": 0.5},
          "startAngle": {"field": "startAngle"},
          "endAngle": {"field": "endAngle"},
          "innerRadius": {"value": 20},
          "outerRadius": {"scale": "r", "field": "memory"},
          "stroke": {"value": "#fff"}
        },
        "update": {"fill": {"value": "#ccc"}},
        "hover": {"fill": {"value": "skyblue"}}
      }
    },
    {
      "type": "text",
      "from": {"data": "table"},
      "encode": {
        "enter": {
          "x": {"field": {"group": "width"}, "mult": 0.5},
          "y": {"field": {"group": "height"}, "mult": 0.5},
          "radius": {"scale": "r", "field": "memory", "offset": 8},
          "theta": {"signal": "(datum.startAngle + datum.endAngle)/2"},
          "fill": {"value": "#000"},
          "align": {"value": "center"},
          "baseline": {"value": "middle"},
          "text": {"field": "memory"}
        }
      }
    }
  ]
}
 类似资料:
  • 问题内容: 我有一个Java的HashMap,其内容(大家可能都知道)可以由 如果在另一个HashMap中有一个HashMap,即嵌套的HashMap,我将如何访问内容?我可以这样做吗,内联: 谢谢。 问题答案: 您可以像假设的那样进行操作。但是您的HashMap必须模板化: 否则,从第一张地图检索第二张地图后,您必须进行强制转换。

  • 问题内容: 团队,编程新手。如下图所示对Json进行编组后,我有可用数据,该数据具有嵌套的Key值。我可以访问的固定键值,如何访问嵌套键值。拆封后,这是下面显示的字节切片数据—> 我可以使用以下代码访问平面键值 这是完整的功能 问题答案: 注意:这可能不适用于您的JSON结构。我根据您的问题推断出它将是什么,但是如果没有实际的结构,我无法保证它可以在不做任何修改的情况下工作。 如果要在映射中访问它

  • 问题内容: 假设我有json数据,例如 现在我正在从该json数据访问字段,例如: 如何以最有效的方式从给定的json数据访问第三个字段()? 不起作用 一种可能是我使用for循环构造字符串,然后进行eval评估,但是有没有有效的方法呢? 问题答案: 老实说,我无法理解您的问题。JSON已经结构化了,为什么需要更改结构? 在您的情况下,我将按以下方式访问它: 如果碰巧希望 遍历 数据,则需要: 更

  • 此类的目的是模拟二进制搜索树的功能。在下面的代码中,我试图将它从一个结构和一堆函数改编成一个包装类,称为BST。但是,我不确定的一件事是如何从节点结构中访问“根”。Root当前在BST类中声明。 具体来说,在show函数中。它不像把它和其他函数放在节点中那样简单,因为根需要是唯一的,并且新节点至少被调用一次。Show将不会在当前状态下编译,我不确定从这里开始。

  • 问题内容: 我的应用程序中有一个非常复杂的数据结构,需要对其进行操作。我试图跟踪玩家在他们的花园中有多少种错误。有十种错误,每种错误都有十种模式,每种模式都有十种颜色。所以可能有1000个独特的错误,我想追踪玩家每种类型的错误数量。嵌套的字典如下所示: 我没有使用此语法的任何错误或投诉。 当我想增加播放器的错误收集时,请执行以下操作: 我收到此错误: 字符串不能转换为’DictionaryInde

  • 问题内容: 我有一本包含字典的字典,其中可能还包含字典,例如 目前,我正在打开包装以获取ID 001的“开单至”,“交易参考” a1,如下所示: 我忍不住觉得这有点笨拙,尤其是最后两行-我觉得以下内容应该可以工作: 有没有一种更简单的方法可以向下钻取嵌套字典而不必解压缩临时变量? 问题答案: 实际有效。是表示的表达式,因此您可以在其中进行查找。对于实际程序,我更喜欢使用面向对象的方法来嵌套字典。对