Skip to content

Plotting med Flask

Dette dokumentet gir en oversikt over de vanligste plot-typene i Chart.js, med enkle eksempler tilpasset bruk sammen med Flask, Jinja og tojson.

Eksemplene forutsetter at Flask sender følgende data til HTML:

navn = ["Thor", "Martin", "Ravi"]
alder = [35, 37, 45]

I HTML må Chart.js være lastet inn:

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

Brukes for å sammenligne verdier.

<canvas id="barChart"></canvas>
<script>
const navn = {{ navn | tojson }};
const alder = {{ alder | tojson }};
new Chart(barChart, {
type: "bar",
data: {
labels: navn,
datasets: [{
label: "Alder",
data: alder
}]
}
});
</script>

Brukes for å vise utvikling over tid.

<canvas id="lineChart"></canvas>
<script>
new Chart(lineChart, {
type: "line",
data: {
labels: {{ navn | tojson }},
datasets: [{
label: "Alder",
data: {{ alder | tojson }}
}]
}
});
</script>

Brukes for å vise andeler av en helhet.

<canvas id="pieChart"></canvas>
<script>
new Chart(pieChart, {
type: "pie",
data: {
labels: {{ navn | tojson }},
datasets: [{
data: {{ alder | tojson }}
}]
}
});
</script>

Som kakediagram, men med hull i midten.

<canvas id="donutChart"></canvas>
<script>
new Chart(donutChart, {
type: "doughnut",
data: {
labels: {{ navn | tojson }},
datasets: [{
data: {{ alder | tojson }}
}]
}
});
</script>

Nyttig når etikettene er lange.

<canvas id="horizontalBar"></canvas>
<script>
new Chart(horizontalBar, {
type: "bar",
data: {
labels: {{ navn | tojson }},
datasets: [{
label: "Alder",
data: {{ alder | tojson }}
}]
},
options: {
indexAxis: "y"
}
});
</script>

Brukes for å sammenligne flere egenskaper.

<canvas id="radarChart"></canvas>
<script>
new Chart(radarChart, {
type: "radar",
data: {
labels: {{ navn | tojson }},
datasets: [{
label: "Alder",
data: {{ alder | tojson }}
}]
}
});
</script>

Brukes for å vise sammenheng mellom to variabler.

punkter = [
{"x": 1, "y": 35},
{"x": 2, "y": 37},
{"x": 3, "y": 45}
]
<canvas id="scatterChart"></canvas>
<script>
new Chart(scatterChart, {
type: "scatter",
data: {
datasets: [{
label: "Alder",
data: {{ punkter | tojson }}
}]
}
});
</script>

Brukes for sammenligning av flere dataserier.

<canvas id="multiChart"></canvas>
<script>
new Chart(multiChart, {
type: "bar",
data: {
labels: {{ navn | tojson }},
datasets: [
{
label: "Alder 2024",
data: {{ alder | tojson }}
},
{
label: "Alder 2025",
data: [36, 38, 46]
}
]
}
});
</script>

Diagramtypetype-verdiBruksområde
SøylebarSammenligne verdier
LinjelineUtvikling over tid
KakepieAndeler
DonutdoughnutAndeler
Horisontal søylebar + indexAxisLange etiketter
RadarradarEgenskaper
ScatterscatterSammenheng

  • Flask brukes til å hente og beregne data
  • Jinja brukes til å sende data videre til HTML
  • JavaScript lager selve plottet
  • Alle lister og ordbøker som brukes i JavaScript må sendes med |tojson