Python Stacked Area 100% Charts are plotted by stacking one dataseries on top of another. It is similar to Stacked Area Chart except that areas are rendered as a percentage of total value at any given point. Below example shows Python Stacked Area 100% Chart along with 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 data = {{ electricity_production_data|safe }}; electricityFromFossil = []; electricityFromNuclear = []; electricityFromRenewables = []; for(var i=0; i<data.length; i++) { electricityFromFossil.push({ label: data[i].year, y: data[i].fossilfuel }); electricityFromNuclear.push({ label: data[i].year, y: data[i].nuclear }); electricityFromRenewables.push({ label: data[i].year, y: data[i].renewables }); } var chart = new CanvasJS.Chart("chartContainer", { animationEnabled: true, title: { text: "Global Electricity Production" }, axisY: { title: "Electricity Production (In TWh)", valueFormatString: "#,##0'%'", }, toolTip: { shared: true }, legend: { cursor: "pointer", itemclick: function (e) { if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) { e.dataSeries.visible = false; } else { e.dataSeries.visible = true; } e.chart.render(); } }, data: [{ type: "stackedArea100", name: "Fossil Fuels", showInLegend: true, yValueFormatString: "#,###.##TWh", dataPoints: electricityFromFossil }, { type: "stackedArea100", name: "Nuclear", showInLegend: true, yValueFormatString: "#,###.##TWh", dataPoints: electricityFromNuclear }, { type: "stackedArea100", name: "Renewables", showInLegend: true, yValueFormatString: "#,###.##TWh", dataPoints: electricityFromRenewables }] }); chart.render(); } </script> </head> <body> <div id="chartContainer" style="height: 320px; width: 570px;"></div> <script src="{% static 'canvasjs.min.js' %}"></script> </body> </html>
from django.shortcuts import render import json import os def index(request): dir_path = os.path.dirname(os.path.realpath(__file__)) data = open(dir_path + "/static/electricity-production.json").read() electricity_production_data = json.loads(data) return render(request, "index.html", { "electricity_production_data": electricity_production_data})
You can show the information related to all the datapoints sharing same x-values in tooltip by setting shared property to true. Legends can be enabled for individual dataseries using showInLegend property. Some other frequently used customization options include color, fillOpacity, markerType, etc.