Beeswarm

See also :

https://github.com/PBI-David/Deneb-Showcase – Beeswarm

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "usermeta": {
    "deneb": {
      "build": "1.5.1.0",
      "metaVersion": 1,
      "provider": "vega",
      "providerVersion": "5.23.0"
    },
    "interactivity": {
      "tooltip": true,
      "contextMenu": true,
      "selection": false,
      "highlight": false,
      "dataPointLimit": 50
    },
    "information": {
      "name": "Beeswarm",
      "description": "[No Description Provided]",
      "author": "Kerry Kolosko",
      "uuid": "fda31bb6-ad2e-4870-a0b3-c1cbcf4fe118",
      "generated": "2023-10-15T06:03:31.744Z",
      "previewImageBase64PNG": "data:image/png;base64,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"
    },
    "dataset": [
      {
        "key": "__0__",
        "name": "Colour",
        "description": "",
        "type": "text",
        "kind": "column"
      },
      {
        "key": "__1__",
        "name": "Value",
        "description": "",
        "type": "text",
        "kind": "column"
      },
      {
        "key": "__2__",
        "name": "Category",
        "description": "",
        "type": "text",
        "kind": "column"
      }
    ]
  },
  "config": {
    "autosize": {
      "contains": "padding",
      "type": "fit"
    },
    "view": {"stroke": "transparent"},
    "font": "Segoe UI",
    "arc": {},
    "area": {
      "line": true,
      "opacity": 0.6
    },
    "bar": {},
    "line": {
      "strokeWidth": 3,
      "strokeCap": "round",
      "strokeJoin": "round"
    },
    "path": {},
    "point": {
      "filled": true,
      "size": 75
    },
    "rect": {},
    "shape": {},
    "symbol": {
      "strokeWidth": 1.5,
      "size": 50
    },
    "text": {
      "font": "Segoe UI",
      "fontSize": 12,
      "fill": "#605E5C"
    },
    "axis": {
      "ticks": false,
      "grid": false,
      "domain": false,
      "labelColor": "#605E5C",
      "labelFontSize": 12,
      "titleFont": "wf_standard-font, helvetica, arial, sans-serif",
      "titleColor": "#252423",
      "titleFontSize": 16,
      "titleFontWeight": "normal"
    },
    "axisQuantitative": {
      "tickCount": 3,
      "grid": true,
      "gridColor": "#C8C6C4",
      "gridDash": [1, 5],
      "labelFlush": false
    },
    "axisX": {"labelPadding": 5},
    "axisY": {"labelPadding": 10},
    "header": {
      "titleFont": "wf_standard-font, helvetica, arial, sans-serif",
      "titleFontSize": 16,
      "titleColor": "#252423",
      "labelFont": "Segoe UI",
      "labelFontSize": 13.333333333333332,
      "labelColor": "#605E5C"
    },
    "legend": {
      "titleFont": "Segoe UI",
      "titleFontWeight": "bold",
      "titleColor": "#605E5C",
      "labelFont": "Segoe UI",
      "labelFontSize": 13.333333333333332,
      "labelColor": "#605E5C",
      "symbolType": "circle",
      "symbolSize": 75
    }
  },
  "data": [{"name": "dataset"}],
  "width": 500,
  "height": 300,
  "padding": {
    "left": 5,
    "right": 5,
    "top": 10,
    "bottom": 10
  },
  "autosize": "pad",
  "scales": [
    {
      "name": "xscale",
      "type": "linear",
      "domain": {
        "data": "dataset",
        "field": "__1__"
      },
      "range": "width",
      "zero": false
    },
    {
      "name": "yscale",
      "type": "band",
      "range": "height",
      "round": true,
      "domain": {
        "data": "dataset",
        "field": "__2__"
      }
    },
    {
      "name": "color",
      "type": "linear",
      "domain": {
        "data": "dataset",
        "field": "__0__"
      },
      "range": {"scheme": "plasma"}
    }
  ],
  "legends": [
    {
      "fill": "color",
      "orient": "none",
      "legendX": {"signal": "width+40"},
      "legendY": -40,
      "padding": 20,
      "title": " ",
      "titleColor": "gray",
      "tickCount": 10,
      "tickMinStep": 0.2,
      "titleFontSize": 12,
      "labelFontSize": 12,
      "labelOffset": 4
    }
  ],
  "axes": [
    {
      "orient": "bottom",
      "scale": "xscale",
      "grid": true,
      "domain": false,
      "ticks": false,
      "labelFontSize": 11,
      "labelFontWeight": "500",
      "gridWidth": 0.5,
      "gridOpacity": 0.8,
      "labelColor": "#595959"
    },
    {
      "orient": "left",
      "scale": "yscale",
      "grid": true,
      "tickCount": 8,
      "ticks": false,
      "labelFontSize": 11,
      "domain": false,
      "gridWidth": 0.5,
      "gridOpacity": 0.8,
      "labelColor": "#595959"
    }
  ],
  "marks": [
    {
      "name": "nodes",
      "type": "symbol",
      "from": {"data": "dataset"},
      "encode": {
        "enter": {
          "fill": {
            "scale": "color",
            "field": "__0__"
          }
        },
        "update": {
          "yfocus": {
            "scale": "yscale",
            "field": "__2__",
            "band": 0.5
          },
          "xfocus": {
            "scale": "xscale",
            "field": "__1__"
          },
          "stroke": {"value": "black"},
          "strokeWidth": {"value": 0.5},
          "zindex": {"value": 1},
          "tooltip": {
            "signal": "{'Value':datum['__1__']}"
          }
        }
      },
      "transform": [
        {
          "type": "force",
          "restart": true,
          "static": true,
          "alpha": 0.2,
          "forces": [
            {
              "force": "collide",
              "iterations": 4,
              "strength": 0.5,
              "radius": 4
            },
            {
              "force": "x",
              "x": "xfocus",
              "strength": 1
            },
            {
              "force": "y",
              "y": "yfocus",
              "strength": 1
            }
          ]
        }
      ]
    }
  ]
}

Leave a comment

Your email address will not be published. Required fields are marked *