User:Base/Graph sandbox


<graph>

{
  "version": 2,
  "width": 600,
  "height": 600,
  "padding": 5,
  "signals": [
    { "name": "rotation", "init": 0,
      "streams": [{
        "type": "click",
        "expr": "rotation + 6.14/180"
      }]
    }
  ],
  "data": [
    {
      "name": "tree",
      "url": "wikiraw:///User:Base/Graph sandbox/Graph.json",
      "format": {"type": "treejson"},
      "transform": [
        { "type": "hierarchy", "sort": "name", "size": [6.28, 300], "orient": "radial", "output": {"x": "angle1", "y": "radius"} },
        { "type": "formula", "field": "angle",   "expr": "(datum.angle1 + rotation) % (2*PI)" },
        { "type": "formula", "field": "degrees", "expr": "!datum.radius ? 0 : (datum.angle + datum.sign*1.57) * 180/PI" },
        { "type": "formula", "field": "yy",      "expr": "300 + datum.radius * cos(datum.angle)" },
        { "type": "formula", "field": "xx",      "expr": "300 + datum.radius * -sin(datum.angle)" },
        { "type": "formula", "field": "opacity", "expr": "0.05+datum.size/100" },
      ]
    }
  ],
  "marks": [
    {
      "type": "path",
      "from": {
        "data": "tree",
        "transform": [
          {"type": "filter", "test": "datum.parent"},
          {
            "type": "linkpath",
            "sourceX": "parent.xx", "sourceY": "parent.yy",
            "targetX": "xx", "targetY": "yy",
            "shape": "line"
          }
        ],
      },
      "properties": {
        "update": {
          "path": {"field": "layout_path"},
          "stroke": {"value": "#000"},
          "strokeWidth": {"value": "2"},
          "strokeOpacity": {"field": "opacity"}
        }
      }
    },
    {
      "type": "text",
      "from": {"data": "tree"},
      "properties": {
        "update": {
          "x": {"field": "xx"},
          "y": {"field": "yy"},
          "font": {"value": "Helvetica Neue"},
          "fontSize": {"value": 10},
          "align": {"field": "align"},
          "baseline": {"value": "middle"},
          "fill": {"value": "#000"},
          "text": {"field": "name"},
          "angle": {"field": "degrees"}
        }
      }
    }
  ]
}

</graph>