Anomaly quadrants coloured by season

Scatter2D graphs are a fundamental visualization tool used to display the relationship between two numerical variables. Each data point is represented as a dot on a two-dimensional plane, where the x-coordinate and y-coordinate correspond to the values of the two variables. This allows for quick identification of trends, clusters, and outliers in the data. Applications range from scientific data analysis to business intelligence, making them highly versatile. Creating effective Scatter2D graphs involves careful consideration of axis scaling, labeling, and color-coding. Highlighting specific data points or regions can improve understanding. Interactive Scatter2D plots further enhance exploration, allowing users to zoom, pan, and select individual data points for detailed examination. Choosing appropriate visualization tools greatly impacts the ability to draw meaningful insights from data.


Economist GGPlot Excel Paul Tol Black And White Solarized Stata Tableau Wall Street CanvasXpress
<html>

  <head>
    <!-- Include the CanvasXpress library in your HTML file -->
    <link rel="stylesheet" href="https://www.canvasxpress.org/dist/canvasXpress.css" type="text/css"/>
    <script src="https://www.canvasxpress.org/dist/canvasXpress.min.js"></script>
  </head>

  <body>

    <!-- Create a canvas element for the chart with the desired dimensions -->
    <div>
      <canvas id="canvasId" width="600" height="600"></canvas>
    </div>


    <!-- Create a script to initialize the chart -->
    <script>

      // Use a data frame (2D-array) for the graph
      var data = 

      // Create the configuration for the graph
      var config = {
         "graphType" : "Scatter2D",
         "titleAlign" : "plot::0",
         "subtitleAlign" : "plot::0",
         "legendHorizontalJustification" : 0,
         "legendJustifyTo" : "plot",
         "theme" : "bw",
         "title" : "How much hotter & drier was each season since 2010?",
         "subtitle" : "Colors indicate the seasons: spring, summer, autumn, winter",
         "xAxis" : [
            "Temperature anomaly (°C)"
         ],
         "yAxis" : [
            "Precipitation anomaly (%)"
         ],
         "colorBy" : "Season",
         "colorScheme" : "User",
         "colors" : [
            "#B22030",
            "#F7B500",
            "#2E8B00",
            "#6699FF"
         ],
         "setMinX" : -2,
         "setMaxX" : 5,
         "setMinY" : -60,
         "setMaxY" : 60,
         "sizes" : [
            8
         ],
         "showSizeLegend" : false,
         "showLegend" : true,
         "legendPosition" : "top",
         "xAxisTitle" : "Temperature anomaly (°C)",
         "yAxisTitle" : "Precipitation anomaly (%)",
         "showDecorations" : true,
         "decorations" : {
            "line" : [
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.77,
                  "y2" : -21.2,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -0.09,
                  "y2" : -13.09,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -1.18,
                  "y2" : 32.6,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.96,
                  "y2" : -4.72,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.46,
                  "y2" : -10.03,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.84,
                  "y2" : 11.74,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.24,
                  "y2" : 14.76,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.42,
                  "y2" : 45.5,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.28,
                  "y2" : -25.88,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.91,
                  "y2" : -29,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.2,
                  "y2" : -5.23,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.09,
                  "y2" : 15.02,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.53,
                  "y2" : 7.05,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.42,
                  "y2" : -35.04,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.23,
                  "y2" : 6.23,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.48,
                  "y2" : 47.73,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.7,
                  "y2" : 30.28,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.28,
                  "y2" : -11.12,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.72,
                  "y2" : -22.01,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -0.1,
                  "y2" : 6.23,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.43,
                  "y2" : -8.61,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.63,
                  "y2" : -6.24,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.58,
                  "y2" : -13.96,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.33,
                  "y2" : 22.55,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.68,
                  "y2" : 37.06,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.38,
                  "y2" : -7.47,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.46,
                  "y2" : -7.87,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.25,
                  "y2" : 20.49,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.24,
                  "y2" : 21.98,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.8,
                  "y2" : -16.65,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.91,
                  "y2" : 20.43,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.12,
                  "y2" : 15.55,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.15,
                  "y2" : -1.17,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.92,
                  "y2" : -41.57,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.64,
                  "y2" : -2.33,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.27,
                  "y2" : 26.65,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.4,
                  "y2" : -17.49,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.72,
                  "y2" : -11.81,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.21,
                  "y2" : -13.37,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.5,
                  "y2" : 9.46,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.07,
                  "y2" : 22.33,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.11,
                  "y2" : -40.88,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.66,
                  "y2" : -22.57,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 4.91,
                  "y2" : 12.42,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "color" : "#222",
                  "width" : 1
               },
               {
                  "y" : 0,
                  "color" : "#222",
                  "width" : 1
               }
            ],
            "marker" : [
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Colder & wetter",
                  "x" : 0.1,
                  "y" : 0.04,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Hotter & wetter",
                  "x" : 0.9,
                  "y" : 0.04,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Colder & drier",
                  "x" : 0.1,
                  "y" : 0.96,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Hotter & drier",
                  "x" : 0.9,
                  "y" : 0.96,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Winter 2020",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Winter 2020",
                  "offsetX" : -12,
                  "offsetY" : -14,
                  "align" : "right"
               },
               {
                  "type" : "text",
                  "variable" : "Winter 2013",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Winter 2013",
                  "offsetX" : 0,
                  "offsetY" : -14,
                  "align" : "center"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2018",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Summer 2018",
                  "offsetX" : 0,
                  "offsetY" : 16,
                  "align" : "center"
               },
               {
                  "type" : "text",
                  "variable" : "Autumn 2010",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Autumn 2010",
                  "offsetX" : 0,
                  "offsetY" : -14,
                  "align" : "center"
               }
            ]
         }
      }

      // Event used to create graph (optional)
      var events = false

      // Call the CanvasXpress function to create the graph
      var cX = new CanvasXpress("canvasId", data, config, events);

    </script>

  </body>

</html>
<html>

  <head>
    <!-- Include the CanvasXpress library in your HTML file -->
    <link rel="stylesheet" href="https://www.canvasxpress.org/dist/canvasXpress.css" type="text/css"/>
    <script src="https://www.canvasxpress.org/dist/canvasXpress.min.js"></script>
  </head>

  <body>

    <!-- Create a canvas element for the chart with the desired dimensions -->
    <div>
      <canvas id="canvasId" width="600" height="600"></canvas>
    </div>


    <!-- Create a script to initialize the chart -->
    <script>

      // Create the data for the graph
      var data = {
         "y" : {
            "vars" : [
               "Spring 2010",
               "Summer 2010",
               "Autumn 2010",
               "Winter 2010",
               "Spring 2011",
               "Summer 2011",
               "Autumn 2011",
               "Winter 2011",
               "Spring 2012",
               "Summer 2012",
               "Autumn 2012",
               "Winter 2012",
               "Spring 2013",
               "Summer 2013",
               "Autumn 2013",
               "Winter 2013",
               "Spring 2014",
               "Summer 2014",
               "Autumn 2014",
               "Winter 2014",
               "Spring 2015",
               "Summer 2015",
               "Autumn 2015",
               "Winter 2015",
               "Spring 2016",
               "Summer 2016",
               "Autumn 2016",
               "Winter 2016",
               "Spring 2017",
               "Summer 2017",
               "Autumn 2017",
               "Winter 2017",
               "Spring 2018",
               "Summer 2018",
               "Autumn 2018",
               "Winter 2018",
               "Spring 2019",
               "Summer 2019",
               "Autumn 2019",
               "Winter 2019",
               "Spring 2020",
               "Summer 2020",
               "Autumn 2020",
               "Winter 2020"
            ],
            "smps" : [
               "Temperature anomaly (°C)",
               "Precipitation anomaly (%)"
            ],
            "data" : [
               [
                  0.77,
                  -21.2
               ],
               [
                  -0.09,
                  -13.09
               ],
               [
                  -1.18,
                  32.6
               ],
               [
                  0.96,
                  -4.72
               ],
               [
                  0.46,
                  -10.03
               ],
               [
                  0.84,
                  11.74
               ],
               [
                  0.24,
                  14.76
               ],
               [
                  1.42,
                  45.5
               ],
               [
                  1.28,
                  -25.88
               ],
               [
                  0.91,
                  -29
               ],
               [
                  0.2,
                  -5.23
               ],
               [
                  2.09,
                  15.02
               ],
               [
                  0.53,
                  7.05
               ],
               [
                  0.42,
                  -35.04
               ],
               [
                  1.23,
                  6.23
               ],
               [
                  2.48,
                  47.73
               ],
               [
                  0.7,
                  30.28
               ],
               [
                  1.28,
                  -11.12
               ],
               [
                  0.72,
                  -22.01
               ],
               [
                  -0.1,
                  6.23
               ],
               [
                  1.43,
                  -8.61
               ],
               [
                  2.63,
                  -6.24
               ],
               [
                  0.58,
                  -13.96
               ],
               [
                  2.33,
                  22.55
               ],
               [
                  1.68,
                  37.06
               ],
               [
                  0.38,
                  -7.47
               ],
               [
                  2.46,
                  -7.87
               ],
               [
                  2.25,
                  20.49
               ],
               [
                  2.24,
                  21.98
               ],
               [
                  1.8,
                  -16.65
               ],
               [
                  1.91,
                  20.43
               ],
               [
                  2.12,
                  15.55
               ],
               [
                  1.15,
                  -1.17
               ],
               [
                  1.92,
                  -41.57
               ],
               [
                  1.64,
                  -2.33
               ],
               [
                  2.27,
                  26.65
               ],
               [
                  2.4,
                  -17.49
               ],
               [
                  1.72,
                  -11.81
               ],
               [
                  1.21,
                  -13.37
               ],
               [
                  2.5,
                  9.46
               ],
               [
                  2.07,
                  22.33
               ],
               [
                  2.11,
                  -40.88
               ],
               [
                  2.66,
                  -22.57
               ],
               [
                  4.91,
                  12.42
               ]
            ]
         },
         "z" : {
            "Season" : [
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter",
               "Spring",
               "Summer",
               "Autumn",
               "Winter"
            ]
         }
      }

      // Create the configuration for the graph
      var config = {
         "graphType" : "Scatter2D",
         "titleAlign" : "plot::0",
         "subtitleAlign" : "plot::0",
         "legendHorizontalJustification" : 0,
         "legendJustifyTo" : "plot",
         "theme" : "bw",
         "title" : "How much hotter & drier was each season since 2010?",
         "subtitle" : "Colors indicate the seasons: spring, summer, autumn, winter",
         "xAxis" : [
            "Temperature anomaly (°C)"
         ],
         "yAxis" : [
            "Precipitation anomaly (%)"
         ],
         "colorBy" : "Season",
         "colorScheme" : "User",
         "colors" : [
            "#B22030",
            "#F7B500",
            "#2E8B00",
            "#6699FF"
         ],
         "setMinX" : -2,
         "setMaxX" : 5,
         "setMinY" : -60,
         "setMaxY" : 60,
         "sizes" : [
            8
         ],
         "showSizeLegend" : false,
         "showLegend" : true,
         "legendPosition" : "top",
         "xAxisTitle" : "Temperature anomaly (°C)",
         "yAxisTitle" : "Precipitation anomaly (%)",
         "showDecorations" : true,
         "decorations" : {
            "line" : [
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.77,
                  "y2" : -21.2,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -0.09,
                  "y2" : -13.09,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -1.18,
                  "y2" : 32.6,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.96,
                  "y2" : -4.72,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.46,
                  "y2" : -10.03,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.84,
                  "y2" : 11.74,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.24,
                  "y2" : 14.76,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.42,
                  "y2" : 45.5,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.28,
                  "y2" : -25.88,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.91,
                  "y2" : -29,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.2,
                  "y2" : -5.23,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.09,
                  "y2" : 15.02,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.53,
                  "y2" : 7.05,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.42,
                  "y2" : -35.04,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.23,
                  "y2" : 6.23,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.48,
                  "y2" : 47.73,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.7,
                  "y2" : 30.28,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.28,
                  "y2" : -11.12,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.72,
                  "y2" : -22.01,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : -0.1,
                  "y2" : 6.23,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.43,
                  "y2" : -8.61,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.63,
                  "y2" : -6.24,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.58,
                  "y2" : -13.96,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.33,
                  "y2" : 22.55,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.68,
                  "y2" : 37.06,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 0.38,
                  "y2" : -7.47,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.46,
                  "y2" : -7.87,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.25,
                  "y2" : 20.49,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.24,
                  "y2" : 21.98,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.8,
                  "y2" : -16.65,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.91,
                  "y2" : 20.43,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.12,
                  "y2" : 15.55,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.15,
                  "y2" : -1.17,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.92,
                  "y2" : -41.57,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.64,
                  "y2" : -2.33,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.27,
                  "y2" : 26.65,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.4,
                  "y2" : -17.49,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.72,
                  "y2" : -11.81,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 1.21,
                  "y2" : -13.37,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.5,
                  "y2" : 9.46,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.07,
                  "y2" : 22.33,
                  "color" : "rgba(240,180,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.11,
                  "y2" : -40.88,
                  "color" : "rgba(60,140,0,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 2.66,
                  "y2" : -22.57,
                  "color" : "rgba(170,30,40,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "y" : 0,
                  "x2" : 4.91,
                  "y2" : 12.42,
                  "color" : "rgba(90,140,255,0.35)",
                  "width" : 2
               },
               {
                  "x" : 0,
                  "color" : "#222",
                  "width" : 1
               },
               {
                  "y" : 0,
                  "color" : "#222",
                  "width" : 1
               }
            ],
            "marker" : [
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Colder & wetter",
                  "x" : 0.1,
                  "y" : 0.04,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Hotter & wetter",
                  "x" : 0.9,
                  "y" : 0.04,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Colder & drier",
                  "x" : 0.1,
                  "y" : 0.96,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2019",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Hotter & drier",
                  "x" : 0.9,
                  "y" : 0.96,
                  "fontSize" : 14,
                  "color" : "rgb(140,140,140)"
               },
               {
                  "type" : "text",
                  "variable" : "Winter 2020",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Winter 2020",
                  "offsetX" : -12,
                  "offsetY" : -14,
                  "align" : "right"
               },
               {
                  "type" : "text",
                  "variable" : "Winter 2013",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Winter 2013",
                  "offsetX" : 0,
                  "offsetY" : -14,
                  "align" : "center"
               },
               {
                  "type" : "text",
                  "variable" : "Summer 2018",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Summer 2018",
                  "offsetX" : 0,
                  "offsetY" : 16,
                  "align" : "center"
               },
               {
                  "type" : "text",
                  "variable" : "Autumn 2010",
                  "sample" : [
                     "Temperature anomaly (°C)",
                     "Precipitation anomaly (%)"
                  ],
                  "text" : "Autumn 2010",
                  "offsetX" : 0,
                  "offsetY" : -14,
                  "align" : "center"
               }
            ]
         }
      }

      // Event used to create graph (optional)
      var events = false

            // Call the CanvasXpress function to create the graph
      var cX = new CanvasXpress("canvasId", data, config, events);

    </script>

  </body>

</html>
library(canvasXpress)
y=read.table("https://www.canvasxpress.org/data/r/cX-scatter2d31-dat.txt", header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
z=read.table("https://www.canvasxpress.org/data/r/cX-scatter2d31-var.txt", header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
canvasXpress(
data=y,
varAnnot=z,
colorBy="Season",
colorScheme="User",
colors=list("#B22030", "#F7B500", "#2E8B00", "#6699FF"),
decorations=list(line=list(list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=0.77, y=0, y2=-21.2), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=-0.09, y=0, y2=-13.09), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=-1.18, y=0, y2=32.6), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=0.96, y=0, y2=-4.72), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=0.46, y=0, y2=-10.03), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=0.84, y=0, y2=11.74), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=0.24, y=0, y2=14.76), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=1.42, y=0, y2=45.5), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=1.28, y=0, y2=-25.88), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=0.91, y=0, y2=-29), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=0.2, y=0, y2=-5.23), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.09, y=0, y2=15.02), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=0.53, y=0, y2=7.05), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=0.42, y=0, y2=-35.04), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=1.23, y=0, y2=6.23), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.48, y=0, y2=47.73), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=0.7, y=0, y2=30.28), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=1.28, y=0, y2=-11.12), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=0.72, y=0, y2=-22.01), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=-0.1, y=0, y2=6.23), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=1.43, y=0, y2=-8.61), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=2.63, y=0, y2=-6.24), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=0.58, y=0, y2=-13.96), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.33, y=0, y2=22.55), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=1.68, y=0, y2=37.06), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=0.38, y=0, y2=-7.47), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=2.46, y=0, y2=-7.87), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.25, y=0, y2=20.49), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=2.24, y=0, y2=21.98), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=1.8, y=0, y2=-16.65), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=1.91, y=0, y2=20.43), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.12, y=0, y2=15.55), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=1.15, y=0, y2=-1.17), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=1.92, y=0, y2=-41.57), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=1.64, y=0, y2=-2.33), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.27, y=0, y2=26.65), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=2.4, y=0, y2=-17.49), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=1.72, y=0, y2=-11.81), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=1.21, y=0, y2=-13.37), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=2.5, y=0, y2=9.46), list(color="rgba(240,180,0,0.35)", width=2, x=0, x2=2.07, y=0, y2=22.33), list(color="rgba(60,140,0,0.35)", width=2, x=0, x2=2.11, y=0, y2=-40.88), list(color="rgba(170,30,40,0.35)", width=2, x=0, x2=2.66, y=0, y2=-22.57), list(color="rgba(90,140,255,0.35)", width=2, x=0, x2=4.91, y=0, y2=12.42), list(color="#222", width=1, x=0), list(color="#222", width=1, y=0)), marker=list(list(color="rgb(140,140,140)", fontSize=14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Colder & wetter", type="text", variable="Summer 2019", x=0.1, y=0.04), list(color="rgb(140,140,140)", fontSize=14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Hotter & wetter", type="text", variable="Summer 2019", x=0.9, y=0.04), list(color="rgb(140,140,140)", fontSize=14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Colder & drier", type="text", variable="Summer 2019", x=0.1, y=0.96), list(color="rgb(140,140,140)", fontSize=14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Hotter & drier", type="text", variable="Summer 2019", x=0.9, y=0.96), list(align="right", offsetX=-12, offsetY=-14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Winter 2020", type="text", variable="Winter 2020"), list(align="center", offsetX=0, offsetY=-14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Winter 2013", type="text", variable="Winter 2013"), list(align="center", offsetX=0, offsetY=16, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Summer 2018", type="text", variable="Summer 2018"), list(align="center", offsetX=0, offsetY=-14, sample=list("Temperature anomaly (°C)", "Precipitation anomaly (%)"), text="Autumn 2010", type="text", variable="Autumn 2010"))),
graphType="Scatter2D",
legendHorizontalJustification=0,
legendJustifyTo="plot",
legendPosition="top",
setMaxX=5,
setMaxY=60,
setMinX=-2,
setMinY=-60,
showDecorations=TRUE,
showLegend=TRUE,
showSizeLegend=FALSE,
sizes=list(8),
subtitle="Colors indicate the seasons: spring, summer, autumn, winter",
subtitleAlign="plot::0",
theme="bw",
title="How much hotter & drier was each season since 2010?",
titleAlign="plot::0",
xAxis=list("Temperature anomaly (°C)"),
xAxisTitle="Temperature anomaly (°C)",
yAxis=list("Precipitation anomaly (%)"),
yAxisTitle="Precipitation anomaly (%)"
)
from canvasxpress.canvas import CanvasXpress
from canvasxpress.plot import show_in_browser

if __name__ == "__main__":
  # Define the chart with its data and configuration
  chart: CanvasXpress = CanvasXpress(
    render_to = "scatter2d31",
    data = {
      "y": {
        "vars": ["Spring 2010", "Summer 2010", "Autumn 2010", "Winter 2010", "Spring 2011", "Summer 2011", "Autumn 2011", "Winter 2011", "Spring 2012", "Summer 2012", "Autumn 2012", "Winter 2012", "Spring 2013", "Summer 2013", "Autumn 2013", "Winter 2013", "Spring 2014", "Summer 2014", "Autumn 2014", "Winter 2014", "Spring 2015", "Summer 2015", "Autumn 2015", "Winter 2015", "Spring 2016", "Summer 2016", "Autumn 2016", "Winter 2016", "Spring 2017", "Summer 2017", "Autumn 2017", "Winter 2017", "Spring 2018", "Summer 2018", "Autumn 2018", "Winter 2018", "Spring 2019", "Summer 2019", "Autumn 2019", "Winter 2019", "Spring 2020", "Summer 2020", "Autumn 2020", "Winter 2020"],
        "smps": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "data": [
          [0.77, -21.2],
          [-0.09, -13.09],
          [-1.18, 32.6],
          [0.96, -4.72],
          [0.46, -10.03],
          [0.84, 11.74],
          [0.24, 14.76],
          [1.42, 45.5],
          [1.28, -25.88],
          [0.91, -29],
          [0.2, -5.23],
          [2.09, 15.02],
          [0.53, 7.05],
          [0.42, -35.04],
          [1.23, 6.23],
          [2.48, 47.73],
          [0.7, 30.28],
          [1.28, -11.12],
          [0.72, -22.01],
          [-0.1, 6.23],
          [1.43, -8.61],
          [2.63, -6.24],
          [0.58, -13.96],
          [2.33, 22.55],
          [1.68, 37.06],
          [0.38, -7.47],
          [2.46, -7.87],
          [2.25, 20.49],
          [2.24, 21.98],
          [1.8, -16.65],
          [1.91, 20.43],
          [2.12, 15.55],
          [1.15, -1.17],
          [1.92, -41.57],
          [1.64, -2.33],
          [2.27, 26.65],
          [2.4, -17.49],
          [1.72, -11.81],
          [1.21, -13.37],
          [2.5, 9.46],
          [2.07, 22.33],
          [2.11, -40.88],
          [2.66, -22.57],
          [4.91, 12.42]
        ]
      },
      "z": {
        "Season": ["Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter"]
      }
    },
    config = {
      "graphType": "Scatter2D",
      "titleAlign": "plot::0",
      "subtitleAlign": "plot::0",
      "legendHorizontalJustification": 0,
      "legendJustifyTo": "plot",
      "theme": "bw",
      "title": "How much hotter & drier was each season since 2010?",
      "subtitle": "Colors indicate the seasons: spring, summer, autumn, winter",
      "xAxis": ["Temperature anomaly (°C)"],
      "yAxis": ["Precipitation anomaly (%)"],
      "colorBy": "Season",
      "colorScheme": "User",
      "colors": ["#B22030", "#F7B500", "#2E8B00", "#6699FF"],
      "setMinX": -2,
      "setMaxX": 5,
      "setMinY": -60,
      "setMaxY": 60,
      "sizes": [8],
      "showSizeLegend": False,
      "showLegend": True,
      "legendPosition": "top",
      "xAxisTitle": "Temperature anomaly (°C)",
      "yAxisTitle": "Precipitation anomaly (%)",
      "showDecorations": True,
      "decorations": {
        "line": [
          {
            "x": 0,
            "y": 0,
            "x2": 0.77,
            "y2": -21.2,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -0.09,
            "y2": -13.09,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -1.18,
            "y2": 32.6,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.96,
            "y2": -4.72,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.46,
            "y2": -10.03,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.84,
            "y2": 11.74,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.24,
            "y2": 14.76,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.42,
            "y2": 45.5,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.28,
            "y2": -25.88,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.91,
            "y2": -29,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.2,
            "y2": -5.23,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.09,
            "y2": 15.02,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.53,
            "y2": 7.05,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.42,
            "y2": -35.04,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.23,
            "y2": 6.23,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.48,
            "y2": 47.73,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.7,
            "y2": 30.28,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.28,
            "y2": -11.12,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.72,
            "y2": -22.01,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -0.1,
            "y2": 6.23,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.43,
            "y2": -8.61,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.63,
            "y2": -6.24,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.58,
            "y2": -13.96,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.33,
            "y2": 22.55,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.68,
            "y2": 37.06,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.38,
            "y2": -7.47,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.46,
            "y2": -7.87,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.25,
            "y2": 20.49,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.24,
            "y2": 21.98,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.8,
            "y2": -16.65,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.91,
            "y2": 20.43,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.12,
            "y2": 15.55,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.15,
            "y2": -1.17,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.92,
            "y2": -41.57,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.64,
            "y2": -2.33,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.27,
            "y2": 26.65,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.4,
            "y2": -17.49,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.72,
            "y2": -11.81,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.21,
            "y2": -13.37,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.5,
            "y2": 9.46,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.07,
            "y2": 22.33,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.11,
            "y2": -40.88,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.66,
            "y2": -22.57,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 4.91,
            "y2": 12.42,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "color": "#222",
            "width": 1
          },
          {
            "y": 0,
            "color": "#222",
            "width": 1
          }
        ],
        "marker": [
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Colder & wetter",
            "x": 0.1,
            "y": 0.04,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Hotter & wetter",
            "x": 0.9,
            "y": 0.04,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Colder & drier",
            "x": 0.1,
            "y": 0.96,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Hotter & drier",
            "x": 0.9,
            "y": 0.96,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Winter 2020",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Winter 2020",
            "offsetX": -12,
            "offsetY": -14,
            "align": "right"
          },
          {
            "type": "text",
            "variable": "Winter 2013",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Winter 2013",
            "offsetX": 0,
            "offsetY": -14,
            "align": "center"
          },
          {
            "type": "text",
            "variable": "Summer 2018",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Summer 2018",
            "offsetX": 0,
            "offsetY": 16,
            "align": "center"
          },
          {
            "type": "text",
            "variable": "Autumn 2010",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Autumn 2010",
            "offsetX": 0,
            "offsetY": -14,
            "align": "center"
          }
        ]
      }
    },
    width = 760,
    height = 640
  )

  # Display the chart in its own Web page
  show_in_browser(chart)
Run this notebook: Open in Binder
from canvasxpress.canvas import CanvasXpress
from canvasxpress.plot import graph

graph(
  CanvasXpress(
    render_to = "scatter2d31",
    data = {
      "y": {
        "vars": ["Spring 2010", "Summer 2010", "Autumn 2010", "Winter 2010", "Spring 2011", "Summer 2011", "Autumn 2011", "Winter 2011", "Spring 2012", "Summer 2012", "Autumn 2012", "Winter 2012", "Spring 2013", "Summer 2013", "Autumn 2013", "Winter 2013", "Spring 2014", "Summer 2014", "Autumn 2014", "Winter 2014", "Spring 2015", "Summer 2015", "Autumn 2015", "Winter 2015", "Spring 2016", "Summer 2016", "Autumn 2016", "Winter 2016", "Spring 2017", "Summer 2017", "Autumn 2017", "Winter 2017", "Spring 2018", "Summer 2018", "Autumn 2018", "Winter 2018", "Spring 2019", "Summer 2019", "Autumn 2019", "Winter 2019", "Spring 2020", "Summer 2020", "Autumn 2020", "Winter 2020"],
        "smps": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "data": [
          [0.77, -21.2],
          [-0.09, -13.09],
          [-1.18, 32.6],
          [0.96, -4.72],
          [0.46, -10.03],
          [0.84, 11.74],
          [0.24, 14.76],
          [1.42, 45.5],
          [1.28, -25.88],
          [0.91, -29],
          [0.2, -5.23],
          [2.09, 15.02],
          [0.53, 7.05],
          [0.42, -35.04],
          [1.23, 6.23],
          [2.48, 47.73],
          [0.7, 30.28],
          [1.28, -11.12],
          [0.72, -22.01],
          [-0.1, 6.23],
          [1.43, -8.61],
          [2.63, -6.24],
          [0.58, -13.96],
          [2.33, 22.55],
          [1.68, 37.06],
          [0.38, -7.47],
          [2.46, -7.87],
          [2.25, 20.49],
          [2.24, 21.98],
          [1.8, -16.65],
          [1.91, 20.43],
          [2.12, 15.55],
          [1.15, -1.17],
          [1.92, -41.57],
          [1.64, -2.33],
          [2.27, 26.65],
          [2.4, -17.49],
          [1.72, -11.81],
          [1.21, -13.37],
          [2.5, 9.46],
          [2.07, 22.33],
          [2.11, -40.88],
          [2.66, -22.57],
          [4.91, 12.42]
        ]
      },
      "z": {
        "Season": ["Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter"]
      }
    },
    config = {
      "graphType": "Scatter2D",
      "titleAlign": "plot::0",
      "subtitleAlign": "plot::0",
      "legendHorizontalJustification": 0,
      "legendJustifyTo": "plot",
      "theme": "bw",
      "title": "How much hotter & drier was each season since 2010?",
      "subtitle": "Colors indicate the seasons: spring, summer, autumn, winter",
      "xAxis": ["Temperature anomaly (°C)"],
      "yAxis": ["Precipitation anomaly (%)"],
      "colorBy": "Season",
      "colorScheme": "User",
      "colors": ["#B22030", "#F7B500", "#2E8B00", "#6699FF"],
      "setMinX": -2,
      "setMaxX": 5,
      "setMinY": -60,
      "setMaxY": 60,
      "sizes": [8],
      "showSizeLegend": False,
      "showLegend": True,
      "legendPosition": "top",
      "xAxisTitle": "Temperature anomaly (°C)",
      "yAxisTitle": "Precipitation anomaly (%)",
      "showDecorations": True,
      "decorations": {
        "line": [
          {
            "x": 0,
            "y": 0,
            "x2": 0.77,
            "y2": -21.2,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -0.09,
            "y2": -13.09,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -1.18,
            "y2": 32.6,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.96,
            "y2": -4.72,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.46,
            "y2": -10.03,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.84,
            "y2": 11.74,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.24,
            "y2": 14.76,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.42,
            "y2": 45.5,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.28,
            "y2": -25.88,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.91,
            "y2": -29,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.2,
            "y2": -5.23,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.09,
            "y2": 15.02,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.53,
            "y2": 7.05,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.42,
            "y2": -35.04,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.23,
            "y2": 6.23,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.48,
            "y2": 47.73,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.7,
            "y2": 30.28,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.28,
            "y2": -11.12,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.72,
            "y2": -22.01,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": -0.1,
            "y2": 6.23,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.43,
            "y2": -8.61,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.63,
            "y2": -6.24,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.58,
            "y2": -13.96,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.33,
            "y2": 22.55,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.68,
            "y2": 37.06,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 0.38,
            "y2": -7.47,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.46,
            "y2": -7.87,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.25,
            "y2": 20.49,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.24,
            "y2": 21.98,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.8,
            "y2": -16.65,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.91,
            "y2": 20.43,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.12,
            "y2": 15.55,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.15,
            "y2": -1.17,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.92,
            "y2": -41.57,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.64,
            "y2": -2.33,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.27,
            "y2": 26.65,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.4,
            "y2": -17.49,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.72,
            "y2": -11.81,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 1.21,
            "y2": -13.37,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.5,
            "y2": 9.46,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.07,
            "y2": 22.33,
            "color": "rgba(240,180,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.11,
            "y2": -40.88,
            "color": "rgba(60,140,0,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 2.66,
            "y2": -22.57,
            "color": "rgba(170,30,40,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "y": 0,
            "x2": 4.91,
            "y2": 12.42,
            "color": "rgba(90,140,255,0.35)",
            "width": 2
          },
          {
            "x": 0,
            "color": "#222",
            "width": 1
          },
          {
            "y": 0,
            "color": "#222",
            "width": 1
          }
        ],
        "marker": [
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Colder & wetter",
            "x": 0.1,
            "y": 0.04,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Hotter & wetter",
            "x": 0.9,
            "y": 0.04,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Colder & drier",
            "x": 0.1,
            "y": 0.96,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Summer 2019",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Hotter & drier",
            "x": 0.9,
            "y": 0.96,
            "fontSize": 14,
            "color": "rgb(140,140,140)"
          },
          {
            "type": "text",
            "variable": "Winter 2020",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Winter 2020",
            "offsetX": -12,
            "offsetY": -14,
            "align": "right"
          },
          {
            "type": "text",
            "variable": "Winter 2013",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Winter 2013",
            "offsetX": 0,
            "offsetY": -14,
            "align": "center"
          },
          {
            "type": "text",
            "variable": "Summer 2018",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Summer 2018",
            "offsetX": 0,
            "offsetY": 16,
            "align": "center"
          },
          {
            "type": "text",
            "variable": "Autumn 2010",
            "sample": ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
            "text": "Autumn 2010",
            "offsetX": 0,
            "offsetY": -14,
            "align": "center"
          }
        ]
      }
    },
    width = 760,
    height = 640
  )
)
using CanvasXpress

canvasxpress(Dict(
  "y" => Dict(
    "vars" => ["Spring 2010", "Summer 2010", "Autumn 2010", "Winter 2010", "Spring 2011", "Summer 2011", "Autumn 2011", "Winter 2011", "Spring 2012", "Summer 2012", "Autumn 2012", "Winter 2012", "Spring 2013", "Summer 2013", "Autumn 2013", "Winter 2013", "Spring 2014", "Summer 2014", "Autumn 2014", "Winter 2014", "Spring 2015", "Summer 2015", "Autumn 2015", "Winter 2015", "Spring 2016", "Summer 2016", "Autumn 2016", "Winter 2016", "Spring 2017", "Summer 2017", "Autumn 2017", "Winter 2017", "Spring 2018", "Summer 2018", "Autumn 2018", "Winter 2018", "Spring 2019", "Summer 2019", "Autumn 2019", "Winter 2019", "Spring 2020", "Summer 2020", "Autumn 2020", "Winter 2020"],
    "smps" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
    "data" => [
      [0.77, -21.2],
      [-0.09, -13.09],
      [-1.18, 32.6],
      [0.96, -4.72],
      [0.46, -10.03],
      [0.84, 11.74],
      [0.24, 14.76],
      [1.42, 45.5],
      [1.28, -25.88],
      [0.91, -29],
      [0.2, -5.23],
      [2.09, 15.02],
      [0.53, 7.05],
      [0.42, -35.04],
      [1.23, 6.23],
      [2.48, 47.73],
      [0.7, 30.28],
      [1.28, -11.12],
      [0.72, -22.01],
      [-0.1, 6.23],
      [1.43, -8.61],
      [2.63, -6.24],
      [0.58, -13.96],
      [2.33, 22.55],
      [1.68, 37.06],
      [0.38, -7.47],
      [2.46, -7.87],
      [2.25, 20.49],
      [2.24, 21.98],
      [1.8, -16.65],
      [1.91, 20.43],
      [2.12, 15.55],
      [1.15, -1.17],
      [1.92, -41.57],
      [1.64, -2.33],
      [2.27, 26.65],
      [2.4, -17.49],
      [1.72, -11.81],
      [1.21, -13.37],
      [2.5, 9.46],
      [2.07, 22.33],
      [2.11, -40.88],
      [2.66, -22.57],
      [4.91, 12.42]
    ]
  ),
  "z" => Dict(
    "Season" => ["Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter"]
  )
);
  graphType = "Scatter2D",
  titleAlign = "plot::0",
  subtitleAlign = "plot::0",
  legendHorizontalJustification = 0,
  legendJustifyTo = "plot",
  theme = "bw",
  title = "How much hotter & drier was each season since 2010?",
  subtitle = "Colors indicate the seasons: spring, summer, autumn, winter",
  xAxis = ["Temperature anomaly (°C)"],
  yAxis = ["Precipitation anomaly (%)"],
  colorBy = "Season",
  colorScheme = "User",
  colors = ["#B22030", "#F7B500", "#2E8B00", "#6699FF"],
  setMinX = -2,
  setMaxX = 5,
  setMinY = -60,
  setMaxY = 60,
  sizes = [8],
  showSizeLegend = false,
  showLegend = true,
  legendPosition = "top",
  xAxisTitle = "Temperature anomaly (°C)",
  yAxisTitle = "Precipitation anomaly (%)",
  showDecorations = true,
  decorations = Dict(
    "line" => [
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.77,
        "y2" => -21.2,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => -0.09,
        "y2" => -13.09,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => -1.18,
        "y2" => 32.6,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.96,
        "y2" => -4.72,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.46,
        "y2" => -10.03,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.84,
        "y2" => 11.74,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.24,
        "y2" => 14.76,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.42,
        "y2" => 45.5,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.28,
        "y2" => -25.88,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.91,
        "y2" => -29,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.2,
        "y2" => -5.23,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.09,
        "y2" => 15.02,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.53,
        "y2" => 7.05,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.42,
        "y2" => -35.04,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.23,
        "y2" => 6.23,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.48,
        "y2" => 47.73,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.7,
        "y2" => 30.28,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.28,
        "y2" => -11.12,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.72,
        "y2" => -22.01,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => -0.1,
        "y2" => 6.23,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.43,
        "y2" => -8.61,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.63,
        "y2" => -6.24,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.58,
        "y2" => -13.96,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.33,
        "y2" => 22.55,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.68,
        "y2" => 37.06,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 0.38,
        "y2" => -7.47,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.46,
        "y2" => -7.87,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.25,
        "y2" => 20.49,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.24,
        "y2" => 21.98,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.8,
        "y2" => -16.65,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.91,
        "y2" => 20.43,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.12,
        "y2" => 15.55,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.15,
        "y2" => -1.17,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.92,
        "y2" => -41.57,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.64,
        "y2" => -2.33,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.27,
        "y2" => 26.65,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.4,
        "y2" => -17.49,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.72,
        "y2" => -11.81,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 1.21,
        "y2" => -13.37,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.5,
        "y2" => 9.46,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.07,
        "y2" => 22.33,
        "color" => "rgba(240,180,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.11,
        "y2" => -40.88,
        "color" => "rgba(60,140,0,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 2.66,
        "y2" => -22.57,
        "color" => "rgba(170,30,40,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "y" => 0,
        "x2" => 4.91,
        "y2" => 12.42,
        "color" => "rgba(90,140,255,0.35)",
        "width" => 2
      ),
      Dict(
        "x" => 0,
        "color" => "#222",
        "width" => 1
      ),
      Dict(
        "y" => 0,
        "color" => "#222",
        "width" => 1
      )
    ],
    "marker" => [
      Dict(
        "type" => "text",
        "variable" => "Summer 2019",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Colder & wetter",
        "x" => 0.1,
        "y" => 0.04,
        "fontSize" => 14,
        "color" => "rgb(140,140,140)"
      ),
      Dict(
        "type" => "text",
        "variable" => "Summer 2019",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Hotter & wetter",
        "x" => 0.9,
        "y" => 0.04,
        "fontSize" => 14,
        "color" => "rgb(140,140,140)"
      ),
      Dict(
        "type" => "text",
        "variable" => "Summer 2019",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Colder & drier",
        "x" => 0.1,
        "y" => 0.96,
        "fontSize" => 14,
        "color" => "rgb(140,140,140)"
      ),
      Dict(
        "type" => "text",
        "variable" => "Summer 2019",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Hotter & drier",
        "x" => 0.9,
        "y" => 0.96,
        "fontSize" => 14,
        "color" => "rgb(140,140,140)"
      ),
      Dict(
        "type" => "text",
        "variable" => "Winter 2020",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Winter 2020",
        "offsetX" => -12,
        "offsetY" => -14,
        "align" => "right"
      ),
      Dict(
        "type" => "text",
        "variable" => "Winter 2013",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Winter 2013",
        "offsetX" => 0,
        "offsetY" => -14,
        "align" => "center"
      ),
      Dict(
        "type" => "text",
        "variable" => "Summer 2018",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Summer 2018",
        "offsetX" => 0,
        "offsetY" => 16,
        "align" => "center"
      ),
      Dict(
        "type" => "text",
        "variable" => "Autumn 2010",
        "sample" => ["Temperature anomaly (°C)", "Precipitation anomaly (%)"],
        "text" => "Autumn 2010",
        "offsetX" => 0,
        "offsetY" => -14,
        "align" => "center"
      )
    ]
  )
)
⇧