Göm meny

Matplotlib

Matplotlib är ett paket som används för att rita diagram med Python. Ofta används det via Jupyter Notebook som är en webbapplikation där man interaktivt kan skriva och köra pythonkod. I Jupyter så kan man se diagrammen direkt i webbläsaren. Vi kommer dock mest jobba med skript som skapar diagrammen som filer.

Du kan testa att skapa diagra interaktivt genom att klicka här.

I många fall där diagram ska skapas lagras data i datatyper vars struktur är optimerad för att snabbt kunna utföra matematiska operationer på. Det paket som tillhandahåller dessa är NumPy. Paketet NumPy importeras oftast med

import numpy as np

för att korta ner mängden kod som behöver skrivas.

Installera matplotlib på egen dator

Du installerar matplotlib på din egen dator genom att skriva ($ refererar till prompten och ska inte skrivas)

$ python3 -m pip install matplotlib

Om du vill kan du installera paketet i en egen virtuell miljö (se Virtuella miljöer). Du kan läsa mer om att installera paket på sidan Installera paket.

Rita diagram

Nedan hittar ni ett exempel på hur matplotlib används för att rita ett diagram och spara det till fil.

# importera paketet matplotlib
import matplotlib

# importera pyplot
import matplotlib.pyplot as plt

# för att spara diagram som png-bilder
matplotlib.use('AGG')


# skapa ny figur
plt.figure()

# rita ut en linje med y-värden från en lista. Index används som x-koordinater
plt.plot([1, 2, 75, 6, 7])

# sätt rubrik för y-axeln
plt.ylabel('some numbers')

# spara figuren till filen figur.png
plt.savefig("figur.png")

figur.png

Flera exempel hittar ni på sidan Pyplot tutorial samt i avsnitten längre ner på denna sida. I denna kurs kommer vi endast att rita enklare diagram med plot()-funktionen.

Skillnad mellan att köra kod i Jupyter Notebook och som skript

För denna kurs finns det två huvudsakliga skillnader mellan att köra pythonkod som genererar diagram i Jupyter Notebook och som ett skript. Den första är att vi behöver berätta för matplotlib att vi vill skapa PNG-filer och inte visa dem direkt. För detta behövs följande två rader kod som måste skrivas innan importen av matplotlib.pyplot.

import matplotlib
matplotlib.use('AGG')

Den andra skillnaden är att eftersom vi sparar filerna istället för att visa dem behöver använda plt.savefig(filnamn) istället för plt.show(). filnamn ska vara en sträng med namnet på filen som vi vill spara figuren till.

Kort om funktionen plot()

Paketet matplotlib har en modul som heter pyplot. I modulen pyplot finns funktionen plot() definierad som vi använder för att rita ut enklare grafer.

Import

För att få tillgång till funktionen måste vi importera modulen pyplot. Detta kan vi göra genom att skriva

import matplotlib.pyplot

Vi kan då anropa på funktionen plot() med argumentet [1, 2, 3] genom att skriva matplotlib.pyplot.plot([1, 2, 3])

Detta lite väl långt så därför brukar ge modulen matplotlib.pyplot ett alias när man importerar den:

import matplotlib.pyplot as plt

På så sätt kan man referera till matplotlib.pyplot med symbolen plt istället: plt.plot([1, 2, 3]).

Linje med hål

Säg att vi har data för hur många personer som är på ett torg varje hel timme. På grund av distraktion under data-insamlingen så saknas ett värde för ett antal timmar:

0: 1
2: 0
3: 0
4: 0
5: 1
6: 3
7: -
8: 11
9: 12
10: 12
11: 14
12: -
13: 15
14: 16
15: 7
16: 5
17: 10
18: 17
19: 8
20: 4
21: 5
22: 3
23: 3

I diagrammet vill vi inte dra ett streck ner till 0 för de klockslag där data saknas. Istället ska det vara hål i linjen:

Vi åstadkommer detta genom att lägga till värdet np.nan, dvs vi använder variabeln nan (som i Not a Number) från modulen numpy:

plt.plot([1, 0, 0, 0, 1, 3, np.nan, 11, 12, 12, 14, np.nan, 15, 16, 7, 5, 10, 17, 8, 4, 5, 3, 3])

Syntax

Nedan följer en kort sammanfattning av vanliga funktioner för att rita ut diagram med pyplot. plt refererar till matplotlib.pyplot.

  • plt.figure(): Påbörjar en ny figur.
  • plt.plot(y_values): Ritar ut en linje i aktuell figur. Listan y_values används som y-värden. plot() antar att att det första värdet är för $x=0$, det andra för $x=1$ osv.
  • plt.plot(x_values, y_values): Ritar ut en linje i aktuell figur. Listan x_values används som x-värden och listan y_values ska innehålla matchande y-värden. Listorna måste vara lika långa.
  • plt.bar(x_values, heights): Ritar ut ett stapeldiagram i aktuell figur. Listan x_values används som rubriker för staplarna. Listan heights används som värden för staplarna (höjderna). Listorna måste vara lika långa.
  • plt.barh(y_values, widths): Ritar ut ett horisontellt stapeldiagram i aktuell figur. Listan y_values används som rubriker för staplarna. Listan widths används som värden för staplarna (bredderna). Listorna måste vara lika långa.
  • plt.ylabel(label): strängen label används som etikett för y-axeln
  • plt.xlabel(label): strängen label används som etikett för x-axeln
  • plt.title(title): strängen title används som rubrik för figuren
  • plt.savefig(filename): sparar aktuell figur till filen filename (som ska vara en sträng)
  • plt.xkcd(): ändra stil på diagrammen så att de ser ut som att de kommer från xkcd

Referenser


Sidansvarig: Jody Foo
Senast uppdaterad: 2021-09-13