Heatmap#

Inspired from this Highcharts demo

Note

Requires the heatmap module:

easychart.config.scripts.append("https://code.highcharts.com/modules/heatmap.js")
easychart.config.save()

See section on extensions for more details.

Note

New in version 0.1.25: a helper function to make creating heatmaps easier!

import easychart

data = easychart.datasets.load("stocks")
matrix = data.resample("M").last().pct_change().corr()

chart = easychart.heatmap(
    matrix, colormap="reds", labels="{(multiply point.value 100):.0f}%"
)
chart.title = "Monthly return correlation"
chart.subtitle = f"Data from {data.index[0]:%d %b %y} to {data.index[-1]:%d %b %y}"
chart

Alternatively

import easychart

data = [
    [0, 0, 10],
    [0, 1, 19],
    [0, 2, 8],
    [0, 3, 24],
    [0, 4, 67],
    [1, 0, 92],
    [1, 1, 58],
    [1, 2, 78],
    [1, 3, 117],
    [1, 4, 48],
    [2, 0, 35],
    [2, 1, 15],
    [2, 2, 123],
    [2, 3, 64],
    [2, 4, 52],
    [3, 0, 72],
    [3, 1, 132],
    [3, 2, 114],
    [3, 3, 19],
    [3, 4, 16],
    [4, 0, 38],
    [4, 1, 5],
    [4, 2, 8],
    [4, 3, 117],
    [4, 4, 115],
    [5, 0, 88],
    [5, 1, 32],
    [5, 2, 12],
    [5, 3, 6],
    [5, 4, 120],
    [6, 0, 13],
    [6, 1, 44],
    [6, 2, 88],
    [6, 3, 98],
    [6, 4, 96],
    [7, 0, 31],
    [7, 1, 1],
    [7, 2, 82],
    [7, 3, 32],
    [7, 4, 30],
    [8, 0, 85],
    [8, 1, 97],
    [8, 2, 123],
    [8, 3, 64],
    [8, 4, 84],
    [9, 0, 47],
    [9, 1, 114],
    [9, 2, 31],
    [9, 3, 48],
    [9, 4, 91],
]

chart = easychart.new("heatmap")
chart.title = "Sales per employee per weekday"
chart.xAxis.categories = [
    "Alexander",
    "Marie",
    "Maximilian",
    "Sophia",
    "Lukas",
    "Maria",
    "Leon",
    "Anna",
    "Tim",
    "Laura",
]
chart.yAxis.categories = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
chart.yAxis.reversed = True
with chart.colorAxis as axis:
    axis.min = 0
    axis.minColor = "#FFFFFF"
    axis.maxColor = "#44ab79"
with chart.legend as legend:
    legend.align = "right"
    legend.layout = "vertical"
    legend.margin = 0
    legend.verticalAlign = "top"
    legend.y = 20
    legend.symbolHeight = 250
chart.plot(data, name="daily sale", labels=True)
chart