|
|
Line 226: |
Line 226: |
| } | | } |
| | | |
− | ]
| |
− | }
| |
− | ]
| |
− | }
| |
− | </graph>
| |
− |
| |
− | == Testing ==
| |
− |
| |
− | <graph>
| |
− | {
| |
− | "width": 1200,
| |
− | "height": 800,
| |
− | "padding": 50,
| |
− | "data": [
| |
− | {
| |
− | "name": "points",
| |
− | "url": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT0_0qj3qt7mCL5I_7n_2knB3ryGPnjJHcGo57cLFAAS1BlomsJzvRrhP9AEfIErQsoPV99Q5owF8sw/pub?gid=265099091&single=true&output=csv",
| |
− | "format": {"type": "csv"}
| |
− | }
| |
− | ],
| |
− | "signals": [
| |
− | {
| |
− | "name": "point",
| |
− | "init": 0,
| |
− | "streams": [
| |
− | {
| |
− | "type": "mousedown",
| |
− | "expr": "{x: eventX(), y: eventY()}"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "delta",
| |
− | "init": 0,
| |
− | "streams": [
| |
− | {
| |
− | "type": "[mousedown, window:mouseup] > window:mousemove",
| |
− | "expr": "{x: point.x - eventX(), y: eventY() - point.y}"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "xAnchor",
| |
− | "init": 0,
| |
− | "streams": [
| |
− | {
| |
− | "type": "mousemove",
| |
− | "expr": "eventX()",
| |
− | "scale": {"name": "x","invert": true}
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "yAnchor",
| |
− | "init": 0,
| |
− | "streams": [
| |
− | {
| |
− | "type": "mousemove",
| |
− | "expr": "eventY()",
| |
− | "scale": {"name": "y","invert": true}
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "zoom",
| |
− | "init": 1,
| |
− | "verbose": true,
| |
− | "streams": [
| |
− | {
| |
− | "type": "wheel",
| |
− | "expr": "pow(1.001, event.deltaY*pow(16, event.deltaMode))"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "xs",
| |
− | "streams": [
| |
− | {
| |
− | "type": "mousedown, mouseup, wheel",
| |
− | "expr": "{min: xMin, max: xMax}"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "ys",
| |
− | "streams": [
| |
− | {
| |
− | "type": "mousedown, mouseup, wheel",
| |
− | "expr": "{min: yMin, max: yMax}"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "xMin",
| |
− | "init": -1000.6,
| |
− | "streams": [
| |
− | {
| |
− | "type": "delta",
| |
− | "expr": "xs.min + (xs.max-xs.min)*delta.x/width"
| |
− | },
| |
− | {
| |
− | "type": "zoom",
| |
− | "expr": "(xs.min-xAnchor)*zoom + xAnchor"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "xMax",
| |
− | "init": 1000.6,
| |
− | "streams": [
| |
− | {
| |
− | "type": "delta",
| |
− | "expr": "xs.max + (xs.max-xs.min)*delta.x/width"
| |
− | },
| |
− | {
| |
− | "type": "zoom",
| |
− | "expr": "(xs.max-xAnchor)*zoom + xAnchor"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "yMin",
| |
− | "init": -1000,
| |
− | "streams": [
| |
− | {
| |
− | "type": "delta",
| |
− | "expr": "ys.min + (ys.max-ys.min)*delta.y/height"
| |
− | },
| |
− | {
| |
− | "type": "zoom",
| |
− | "expr": "(ys.min-yAnchor)*zoom + yAnchor"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "yMax",
| |
− | "init": 1000,
| |
− | "streams": [
| |
− | {
| |
− | "type": "delta",
| |
− | "expr": "ys.max + (ys.max-ys.min)*delta.y/height"
| |
− | },
| |
− | {
| |
− | "type": "zoom",
| |
− | "expr": "(ys.max-yAnchor)*zoom + yAnchor"
| |
− | }
| |
− | ]
| |
− | },
| |
− | {
| |
− | "name": "pointSize",
| |
− | "init": 50,
| |
− | "streams": [
| |
− | {
| |
− | "type": "xMin",
| |
− | "expr": "clamp(60/(xMax-xMin), 50, 1000)"
| |
− | }
| |
− | ]
| |
− | }
| |
− | ],
| |
− | "scales": [
| |
− | {
| |
− | "name": "x",
| |
− | "type": "linear",
| |
− | "range": "width",
| |
− | "zero": false,
| |
− | "domainMin": {"signal": "xMin"},
| |
− | "domainMax": {"signal": "xMax"}
| |
− | },
| |
− | {
| |
− | "name": "y",
| |
− | "type": "linear",
| |
− | "range": "height",
| |
− | "zero": false,
| |
− | "domainMin": {"signal": "yMin"},
| |
− | "domainMax": {"signal": "yMax"}
| |
− | }
| |
− | ],
| |
− | "axes": [
| |
− | {
| |
− | "type": "x",
| |
− | "scale": "x",
| |
− | "grid": true,
| |
− | "layer": "back",
| |
− | "properties": {"labels": {"fontSize": {"value": 14}}}
| |
− | },
| |
− | {
| |
− | "type": "y",
| |
− | "scale": "y",
| |
− | "grid": true,
| |
− | "layer": "back",
| |
− | "properties": {"labels": {"fontSize": {"value": 14}}}
| |
− | }
| |
− | ],
| |
− | "marks": [
| |
− | {
| |
− | "type": "group",
| |
− | "properties": {
| |
− | "enter": {
| |
− | "x": {"value": 0},
| |
− | "width": {"field": {"group": "width"}},
| |
− | "y": {"value": 0},
| |
− | "height": {"field": {"group": "height"}},
| |
− | "clip": {"value": true}
| |
− | }
| |
− | },
| |
− | "marks": [
| |
− | {
| |
− | "type": "symbol",
| |
− | "from": {"data": "points"},
| |
− | "properties": {
| |
− | "update": {
| |
− | "x": {"scale": "x","field": "X"},
| |
− | "y": {"scale": "y","field": "Y"},
| |
− | "fill": {"value": "steelblue"},
| |
− | "size": {"signal": "pointSize"}
| |
− | }
| |
− | }
| |
− | }
| |
| ] | | ] |
| } | | } |