

Flask webapp with pie chart





Chart.js is a javascript library to create simple and clean charts. All of them are HTML5 based, responsive, modular, interactive and there are in total 6 charts.



Related course

Python Flask: Make Web Apps with Python



<meta charset="utf-8"> <title>Chart.js </title> <!-- import plugin script --> <script src="static/Chart.min.js"></script>

<h1>Flask Chart.js</h1>

<!-- bar chart canvas element --><canvas id="chart" width="600" height="400"></canvas>

<script><br />

// bar chart data<br />

var barData = {<br />

labels : [],<br />

datasets : [<br />

{<br />

fillColor: "rgba(151,187,205,0.2)" ,<br />

strokeColor: "rgba(151,187,205,1)" ,<br />

pointColor: "rgba(151,187,205,1)" ,<br />

data : []<br />

}<br />

]<br />

}</p>

<p> // get bar chart canvas<br />

var mychart = document.getElementById("chart").getContext("2d");</p>

<p> steps = 10 <br />

max = 10 <br />

// draw bar chart<br />

new Chart(mychart).Bar(barData, {<br />

scaleOverride: true,<br />

scaleSteps: steps,<br />

scaleStepWidth: Math.ceil(max / steps),<br />

scaleStartValue: 0 ,<br />

scaleShowVerticalLines: true,<br />

scaleShowGridLines : true,<br />

barShowStroke : true,<br />

scaleShowLabels: true<br />

});</p>

<p></script>







Create the directory /static/ and add the file

In this article you will learn how to create great looking charts using Chart.js and Flask Chart.js is a javascript library to create simple and clean charts. All of them are HTML5 based, responsive, modular, interactive and there are in total 6 charts.Create the directory /static/ and add the file Chart.min.js to it. You can get it either from the Chart.js website or use the link. Finally go into the home directory and create app.py with this contents:



from flask import Flask

from flask import Markup

from flask import Flask

from flask import render_template

app = Flask(__name__)





def chart () :

labels = [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" ]

values = [ 10 , 9 , 8 , 7 , 6 , 4 , 7 , 8 ]

return render_template( 'chart.html' , values=values, labels=labels)



if __name__ == "__main__" :

app.run(host= '0.0.0.0' , port= 5001 )



Finally run:



python app.py





Open http://127.0.0.1:5001/ and you will see the array values[] plotted with the data in labels[].

We simply pass these two arrays to render_template(). This means that most of the magic occurs in the template. Chart.js is a client-side javascript library which is why our app.py is very minimal.



Result: Finally run: Flask barchart

Related course

Python Flask: Make Web Apps with Python

Create a line chart with Chart.js and Flask

To create a line chart, we can simply modify the chart.html template. Change it to:

<meta charset= "utf-8" >

<title>Chart.js </title>



<!-- import plugin script -->

<script src="static/Chart.min.js"></script>

<h1>Flask Chart.js</h1>

<!-- bar chart canvas element -->

<canvas id="chart" width="600" height="400"></canvas>



<script></p>

<p> // bar chart data<br />

var barData = {<br />

labels : [],<br />

datasets : [<br />

{<br />

fillColor: "rgba(151,187,205,0.2)" ,<br />

strokeColor: "rgba(151,187,205,1)" ,<br />

pointColor: "rgba(151,187,205,1)" ,<br />

pointStrokeColor: "#fff" ,<br />

pointHighlightFill: "#fff" ,<br />

pointHighlightStroke: "rgba(151,187,205,1)" ,<br />

bezierCurve : false,<br />

data : []<br />

}]<br />

}</p>

<p> Chart.defaults. global .animationSteps = 50 ;<br />

Chart.defaults. global .tooltipYPadding = 16 ;<br />

Chart.defaults. global .tooltipCornerRadius = 0 ;<br />

Chart.defaults. global .tooltipTitleFontStyle = "normal" ;<br />

Chart.defaults. global .tooltipFillColor = "rgba(0,0,0,0.8)" ;<br />

Chart.defaults. global .animationEasing = "easeOutBounce" ;<br />

Chart.defaults. global .responsive = false;<br />

Chart.defaults. global .scaleLineColor = "black" ;<br />

Chart.defaults.global.scaleFontSize = 16;</p>

<p> // get bar chart canvas<br />

var mychart = document.getElementById("chart").getContext("2d");</p>

<p> steps = 10 <br />

max = 10 <br />

// draw bar chart<br />

var LineChartDemo = new Chart(mychart).Line(barData, {<br />

scaleOverride: true,<br />

scaleSteps: steps,<br />

scaleStepWidth: Math.ceil(max / steps),<br />

scaleStartValue: 0 ,<br />

scaleShowVerticalLines: true,<br />

scaleShowGridLines : true,<br />

barShowStroke : true,<br />

scaleShowLabels: true,<br />

bezierCurve: false,</p>

<p> });</p>

<p></script>







Output:

Flask line-chart

Related course

Python Flask: Make Web Apps with Python

Creating a pie chart

To create a pie chart, we must modify the application code slightly. We need 3 arrays: values, labels and colors. Colors are defined in hexadecimal, as usual in HTML. To iterate them in one loop, we zip them.

from flask import Flask

from flask import Markup

from flask import Flask

from flask import render_template

app = Flask(__name__)





def chart () :

labels = [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" ]

values = [ 10 , 9 , 8 , 7 , 6 , 4 , 7 , 8 ]

colors = [ "#F7464A" , "#46BFBD" , "#FDB45C" , "#FEDCBA" , "#ABCDEF" , "#DDDDDD" , "#ABCABC" ]

return render_template( 'chart.html' , set=zip(values, labels, colors))



if __name__ == "__main__" :

app.run(host= '0.0.0.0' , port= 5001 )



Secondly we modify the template to:

<meta charset="utf-8"> <title>Chart.js </title> <!-- import plugin script --> <script src="static/Chart.min.js"></script>

<h1>Flask Chart.js</h1>

<!-- bar chart canvas element --><canvas id="chart" width="600" height="400"></canvas>

<script><br />

var pieData = [<br />

</p>

<p> ];</p>

<p> // get bar chart canvas<br />

var mychart = document.getElementById("chart").getContext("2d");</p>

<p> steps = 10 <br />

max = 10 <br />

// draw pie chart<br />

new Chart(document.getElementById("chart").getContext("2d")).Pie(pieData);</p>

<p></script>





Result:

Flask piechart

Download Flask Examples