InkStitch - data visualization/highcharts-heatmap-js-code

The educational technology and digital learning wiki
Jump to navigation Jump to search

I did not manage to read a regular rectangular CSV and hat to convert it to triplets (name,assignment_no,grade).

JS

Highcharts.chart("container", {
  chart: {
    type: "heatmap",
    inverted: true,
    spacingTop: 20,
    width: 670,
    height: "72%"
  },

  data: {
    csv: document.getElementById("csv").innerHTML
  },

  title: {
    text: "FRIENDLY STIC GRADING HEAT MAP",
    align: "left",
    style: {fontSize:"25pt", fontWeight:900}
  },

  // Y-AXIS (in the display since we inverted)
  xAxis: {
    tickLength: 0,
    // set to true to see
    labels: { enabled: false },
    categories: [
      "Dd",
      "La",
      "Ab",
      "Ay",
      "Ar",
      "Is",
      "Rn",
      "An",
      "Ls",
      "Sr",
      "En",
      "An",
      "Az",
      "Ra",
      "Hi",
      "Ei",
      "Na",
      "Im",
      "Lr",
      "Ai",
      "Ti",
      "Ru",
      "Os",
      "Rt",
      "En",
      "Ln",
      "Hr",
      "Ri"
    ],
    min: 0,
    max: 27
  },
  // X AXIS in the display (inverted)
  yAxis: {
    title: null,
    minPadding: 0,
    maxPadding: 0,
    startOnTick: false,
    endOnTick: false,
    min: 1,
    max: 12,
    // tickInterval: 1,
    // tickWidth: 10, // comment out later
    reversed: false,
    labels: {
      // padding: 10,
      align: "center",
      reserveSpace: true,
      style: {
        fontSize: "20pt",
        fontWeight: "bold",
        color: "red"
      }
    }
  },

  colorAxis: {
    min: 0,
    max: 6,
    // minColor: "yellow",
    // maxColor: "red"
    stops: [
      [0.1, "Lavender"],
      [0.83, "Gold"],
      [0.9, "yellow"],
      [0.975, "orange"],
      [0.99, "red"]
    ]
  },
  legend: {
    align: "right",
    layout: "vertical",
    margin: 0,
    verticalAlign: "top",
    y: 40,
    symbolHeight: 365,
    itemStyle: {
      color: "red",
      fontSize: "20pt"
      }
  },

  tooltip: {
    formatter: function() {
      // return '<b>' + "STU=" + this.point.x + " Grade=" + this.point.y + "</b>";
      return (
        "<b>" +
        this.series.xAxis.categories[this.point.x] +
        "</b> has grade <br><b>" +
        this.point.value +
        "</b> for ex " +
        this.point.y +
        "</b>"
      );
    }
  },

  series: [
    {
      borderWidth: 2,
      colsize: 1,
      // below are the labels in the squares
      dataLabels: { enabled: false, color: "white" }
    }
  ]
});


HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/maps/modules/map.js"></script>
<script src="https://code.highcharts.com/maps/modules/data.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="height: 128mm; width: 178mm;border:1px solid red"></div>
<!-- BE VERY CAREFUL WITH DATA. ONE SINGLE MISTAKE, e.g. "O" instead of "0" and your data will display freakingly -->
<pre id="csv" style="display: none">Name,Ex,Grade
0, 1, 5.75
0, 2, 5.75
0, 3, 5.25
0, 4, 5.5
0, 5, 5.5
0, 6, 5.5
0, 7, 5.5 
0, 8, 6
0, 9, 5.5
0, 10, 5.75
0, 11, 6
0, 12, 5.5
1, 1, 6
1, 2, 5.75
1, 3, 5.75
1, 4, 5.25
1, 5, 5.25
1, 6, 5.25
1, 7, 5.75
1, 8, 6
1, 9, 5.75
1, 10, 5.75
1, 11, 6
1, 12, 6
2, 1, 5
2, 2, 5.5
2, 3, 5.25
2, 4, 4.5
2, 5, 5.25
2, 6, 4.5
2, 7, 5.25
2, 8, 5.75
2, 9, 5.75
2, 10, 6
2, 11, 5.75
2, 12, 5.5
3, 1, 6
3, 2, 6
3, 3, 5.5
3, 4, 0
3, 5, 5
3, 6, 5
3, 7, 5.5
3, 8, 5.75
3, 9, 5.5
3, 10, 5.75
3, 11, 5.75
3, 12, 5.75
4, 1, 5.5
4, 2, 5.75
4, 3, 5.5
4, 4, 5
4, 5, 4.75
4, 6, 4.5
4, 7, 5.25
4, 8, 5.75
4, 9, 5
4, 10, 5.25
4, 11, 5
4, 12, 6
5, 1, 6
5, 2, 5.75
5, 3, 6
5, 4, 5.75
5, 5, 5.75
5, 6, 5.75
5, 7, 5.75
5, 8, 5.5
5, 9, 5.75
5, 10, 5.5
5, 11, 5.25
5, 12, 5.75
6, 1, 5.5
6, 2, 6
6, 3, 5.5
6, 4, 5
6, 5, 5.25
6, 6, 5.25
6, 7, 6
6, 8, 5.75
6, 9, 6
6, 10, 5.75
6, 11, 5.75
6, 12, 5.75
7, 1, 6
7, 2, 5.75
7, 3, 5.75
7, 4, 5.75
7, 5, 5.5
7, 6, 5.5
7, 7, 0
7, 8, 0
7, 9, 0
7, 10, 0
7, 11, 0
7, 12, 0
8, 1, 4.5
8, 2, 5.5
8, 3, 5.25
8, 4, 5.25
8, 5, 5.25
8, 6, 5.0
8, 7, 5.5
8, 8, 6
8, 9, 6
8, 10, 6
8, 11, 6
8, 12, 6
9, 1, 6.0
9, 2, 5.5
9, 3, 5.75
9, 4, 5.25
9, 5, 5.25
9, 6, 5.5
9, 7, 5.25
9, 8, 5.5
9, 9, 5.5
9, 10, 5.5
9, 11, 6
9, 12, 5.75
10, 1, 6.0
10, 2, 5.5
10, 3, 6.0
10, 4, 5.5
10, 5, 6.0
10, 6, 6.0
10, 7, 6
10, 8, 5.5
10, 9, 6
10, 10, 5.75
10, 11, 6
10, 12, 6
11, 1, 6.0
11, 2, 5
11, 3, 5.25
11, 4, 5.5
11, 5, 5.25
11, 6, 5.25
11, 7, 4.75
11, 8, 5
11, 9, 5.5
11, 10, 5.5
11, 11, 6
11, 12, 6
12, 1, 5.75
12, 2, 5.5
12, 3, 5.25
12, 4, 5.0
12, 5, 5.5
12, 6, 5.5
12, 7, 5.5
12, 8, 5.75
12, 9, 5.25
12, 10, 5
12, 11, 5.5
12, 12, 5.5
12, 1, 5
13, 2, 5.75
13, 3, 4.5
13, 4, 4.75
13, 5, 4.5
13, 6, 4.5
13, 7, 5.25
13, 8, 5
13, 9, 5
13, 10, 5
13, 11, 5.75
13, 12, 5.75
14, 1, 6.0
14, 2, 5.5
14, 3, 5.5
14, 4, 5.5
14, 5, 5.75
14, 6, 5.25
14, 7, 5.75
14, 8, 5.75
14, 9, 6
14, 10, 6
14, 11, 6
14, 12, 6
15, 1, 6.0
15, 2, 5.75
15, 3, 5.25
15, 4, 5.75
15, 5, 5.75
15, 6, 6.0
15, 7, 5.25
15, 8, 5.75
15, 9, 5.75
15, 10, 5.75
15, 11, 5.75
15, 12, 5.75
16, 1, 6.0
16, 2, 6
16, 3, 5.5
16, 4, 5.0
16, 5, 5.75
16, 6, 5.75
16, 7, 5.25
16, 8, 5.5
16, 9, 5.25
16, 10, 5.25
16, 11, 6
16, 12, 5.75
17, 1, 6.0
17, 2, 6
17, 3, 6.0
17, 4, 5.75
17, 5, 5.75
17, 6, 6.0
17, 7, 6
17, 8, 5.5
17, 9, 5.25
17, 10, 5.25
17, 11, 5.75
17, 12, 0
18, 1, 5.75
18, 2, 5.75
18, 3, 5.75
18, 4, 5.25
18, 5, 5.75
18, 6, 5.75
18, 7, 5.75
18, 8, 5.5
18, 9, 5.75
18, 10, 5.5
18, 11, 5.75
18, 12, 5.75
19, 1, 5.75
19, 2, 5.75
19, 3, 4.75
19, 4, 5.25
19, 5, 5.0
19, 6, 5.25
19, 7, 4.75
19, 8, 5
19, 9, 5.25
19, 10, 5.75
19, 11, 5.75
19, 12, 5.25
20, 1, 6.0
20, 2, 5.25
20, 3, 5.75
20, 4, 5.75
20, 5, 5.75
20, 6, 5.5
20, 7, 4.75
20, 8, 5.5
20, 9, 6
20, 10, 5.75
20, 11, 6
20, 12, 6
21, 1, 6.0
21, 2, 5.5
21, 3, 5.25
21, 4, 4.5
21, 5, 4.75
21, 6, 4.5
21, 7, 4.75
21, 8, 4.75
21, 9, 5.25
21, 10, 5.25
21, 11, 5
21, 12, 5.25
22, 1, 5.75
22, 2, 4.75
22, 3, 5.0
22, 4, 4.75
22, 5, 4.75
22, 6, 5.0
22, 7, 5
22, 8, 5.25
22, 9, 4.75
22, 10, 5.25
22, 11, 5.25
22, 12, 5.25
23, 1, 6.0
23, 2, 6
23, 3, 6.0
23, 4, 5.0
23, 5, 6.0
23, 6, 6.0
23, 7, 5.25
23, 8, 5.25
23, 9, 5.25
23, 10, 5.25
23, 11, 6
23, 12, 5.75
24, 1, 5.25
24, 2, 5.5
24, 3, 5.5
24, 4, 5.75
24, 5, 5.5
24, 6, 5.75
24, 7, 5.75
24, 8, 5.75
24, 9, 6
24, 10, 6
24, 11, 6
24, 12, 6
25, 1, 5.25
25, 2, 5.5
25, 3, 0
25, 4, 0
25, 5, 0
25, 6, 0
25, 7, 5.25
25, 8, 5.5
25, 9, 0
25, 10, 0
25, 11, 0
25, 12, 0
26, 1, 6
26, 2, 5.75
26, 3, 0
26, 4, 0
26, 5, 0
26, 6, 0
26, 7, 5
26, 8, 5.5
26, 9, 6
26, 10, 5.25
26, 11, 6
26, 12, 6
27, 1, 6
27, 2, 6
27, 3, 5.25
27, 4, 4.5
27, 5, 5.5
27, 6, 5.25
27, 27, 0
27, 8, 0
27, 9, 0
27, 10, 0
27, 11, 0
27, 12, 0
</pre>