Example shows Python Multi Series Range Spline Area Chart. It also includes Django source-code that you can try running locally.
<!-- index.html -->
{% load static %}
<html>
<head>
<title>CanvasJS Python Charts</title>
<script>
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: "Min/Max Temperature Comparison"
},
theme: "light2",
axisY: {
valueFormatString: "#0.##°C",
title: "Temperature (°C)"
},
axisX: {
interval: 1,
intervalType: "month",
valueFormatString: "MMM"
},
toolTip: {
shared: true
},
legend: {
//dockInsidePlotArea: true,
verticalAlign: "top",
cursor: "pointer",
itemclick: hideUnhideDataSeries
},
data: [{
type: "rangeSplineArea",
name: "Doha",
showInLegend: true,
legendText: "Doha, QA",
yValueFormatString: "#0.##°C",
xValueFormatString: "MMM YYYY",
xValueType: "dateTime",
markerSize: 0,
content: "<b>{name}</b> Min: {y[0]}, Max: {y[1]}",
dataPoints: {{ doha_weather_data|safe }}
},{
type: "rangeSplineArea",
name: "Manchester",
showInLegend: true,
legendText: "Manchester, UK",
yValueFormatString: "#0.##°C",
xValueFormatString: "MMM YYYY",
xValueType: "dateTime",
markerSize: 0,
content: "<b>{name}</b> Min: {y[0]}, Max: {y[1]}",
dataPoints: {{ machester_weather_data|safe }}
}]
});
chart.render();
function hideUnhideDataSeries(e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
}
</script>
</head>
<body>
<div id="chartContainer" style="width: 100%; height: 360px;"></div>
<script src="{% static 'canvasjs.min.js' %}"></script>
</body>
</html>
from django.shortcuts import render
def index(request):
machester_weather_data = [
{ "x": 1609459200000, "y": [-5.889, 12] },
{ "x": 1612137600000, "y": [-5.278, 15] },
{ "x": 1614556800000, "y": [-3, 21] },
{ "x": 1617235200000, "y": [-4.278, 19] },
{ "x": 1619827200000, "y": [-1.389, 23] },
{ "x": 1622505600000, "y": [3.222, 27] },
{ "x": 1625097600000, "y": [8, 38] },
{ "x": 1627776000000, "y": [6.111, 23] },
{ "x": 1630454400000, "y": [4.778, 28] },
{ "x": 1633046400000, "y": [1.5, 21] },
{ "x": 1635724800000, "y": [-5.389, 16] },
{ "x": 1638316800000, "y": [-2.222, 15] }
]
doha_weather_data = [
{ "x": 1609459200000, "y": [7, 29.889] },
{ "x": 1612137600000, "y": [9.5, 32] },
{ "x": 1614556800000, "y": [12.278, 41.5] },
{ "x": 1617235200000, "y": [13, 41.722] },
{ "x": 1619827200000, "y": [21, 47] },
{ "x": 1622505600000, "y": [23.611, 48.111] },
{ "x": 1625097600000, "y": [25.111, 48.222] },
{ "x": 1627776000000, "y": [27.722, 48] },
{ "x": 1630454400000, "y": [22.611, 46.111] },
{ "x": 1633046400000, "y": [19.278, 41.722] },
{ "x": 1635724800000, "y": [15.389, 36.611] },
{ "x": 1638316800000, "y": [11.889, 31.111] }
]
return render(request, 'index.html', { "machester_weather_data" : machester_weather_data, "doha_weather_data": doha_weather_data })
You can customize the color of legend markers & it's border using legendMarkerColor & legendMarkerBorderColor properties. Also, the type of the marker can be changed by setting the legendMarkerType.