Plotte med Python

Vi kan plotte diagrammer og grafer med Python. Da bruker vi ofte modulen matplotlib.pyplot. Vi imorterer denne og lager et alias (en forkortelse) slik:

import matplotlib.pyplot as plt

Vi viser hvordan vi kan gjøre de ulike plottene gjennom en del eksempler.

Linjediagrammer

Eksempel 1

Tabellen nedenfor viser temperaturen for noen klokkeslett.

Kokkeslett

10

12

13

14

15

16

17

Temperatur \(^\circ C\)

12

13

14.3

14.5

15.3

14.2

15.0

Plott tallen i tabellen.

# Vi lager to lister, en for x-verdier og en for y-verdier:

Klokkeslett = [10, 12, 13, 14, 15, 16, 17]
Temperatur = [12, 13, 14.3, 14.5, 15.3, 14.2, 15]

plt.plot(Klokkeslett, Temperatur, "-*")
plt.xlabel('Klokkeslett')
plt.ylabel('Temperatur')
plt.show()
_images/plotte_4_0.png

Eksempel 2

Lag en grafisk representasjon av tallene i tabellen:

Klokkeslett

0.00

2.00

4.00

6.00

8.00

10.00

12.00

14.00

16.00

18.00

20.00

22.00

Temperatur Leirvik

12

10

9

11

14

15

18

21

22

21

18

15

Temperatur Bergen

10

9

10

11

10

14

17

22

23

24

15

14

import matplotlib.pyplot as plt

Tid = list(range(0, 23, 2))
TempLeirvik = [12, 10, 9, 11, 14, 15, 18, 21, 22, 21, 18, 15]
TempBergen = [10, 9, 10, 11, 10, 14, 17, 22, 23, 24, 15, 14]

plt.plot(Tid, TempLeirvik, "o--", label="Sommerøya Stord")
plt.plot(Tid, TempBergen, "o--", label="Bergen")
plt.legend()
plt.grid()
plt.show()
_images/plotte_6_0.png

Plotting av kontinuerlige funksjoner

Dersom vi skal plotte kontinuerlige funksjoner, må vi lage mange x-verdier som vi kan bruke. For å lage y-verdien definerer vi funksjonen og finner y-verdiene tilhørende hver x-verdi. Dersom vi bruker numpy er dette ganske greit å gjøre.

Eksempel 3

Plott grafen til \(f(x)=x^2-2x-4\) i et koordinatsystem. Velg x-verdier mellom \(-3\) og \(5\).

import matplotlib.pyplot as plt # For å kunne plotte
import numpy as np              # For å kunne lage en x-verdier og y-verdier

# Definerer funksjonen:

def f(x):
    return x**2-2*x-4

# definerer x-verdier og y-verdier

X = np.linspace(-3, 5, 100)  # 100 x-verdier mellom -3 og 5
Y = f(X)                     # 100 y-verdier 

plt.plot(X, Y)               # Plotter x-verdier og y-verdier
plt.xlabel("x")              # Legger til navn på x-aksen
plt.ylabel("y")              # Legger til navn på y-aksen
plt.title(f"Grafen til $f(x)=x^2-2x-4$") # Legger til tittel
plt.grid()             # Legger til rutenett på grafen
plt.show()
_images/plotte_9_0.png

Eksempel 4

Funksjonen \(f\) er gitt ved

\[f(x) = x ^ 5+x ^ 3, \ \ D_f = [-1, \ 1] \]

Tegn grafen til \(f\) sammen med grafen til den omvendte funksjonen \(f ^ {-1}\) i samme koordinatsystem.

import numpy as np
import matplotlib.pyplot as plt 

X = np.linspace(-1, 1, 100)
def f(x):
    return x**5+x**3

Y = f(X)

plt.plot(X, Y, label=r"$f$")
plt.plot(Y, X, label=r"$f^{-1}$")
plt.plot([-2, 2], [-2, 2],"--", label=r"$y=x$")
plt.hlines(0, -2, 2)
plt.vlines(0, -2, 2)
plt.title(r"Grafen til $f$ og $f^{-1}$")
plt.xlabel("x")
plt.ylabel("y")
plt.grid()
plt.legend()
plt.show()
_images/plotte_11_0.png

Eksempel 5

Funksjonen \(f\) er gitt ved

\[ f(x)=\ln(x^2+3)\]

Tegn grafen til \(f\) og grafen til \(f'\) i et koordinatsystem.

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return np.log(x**2+3)  # np.log(x) er naturlig logaritme til x

# Derfinerer den deriverte til funksjonen f:

def df(x, h=0.00001):
    return (f(x+h)-f(x))/h

# Definerer x-verdier og y-verdier:

X = np.linspace(-4, 4, 100)
Y = f(X)
dY = df(X)
plt.figure(figsize=(14, 6))  # Definerer størrelse på figur

plt.plot(X, Y, label=r"$f$")
plt.plot(X, dY, label=r"$f'$")
plt.vlines(0, -1, 4)  # Legger til y-aksen
plt.hlines(0, -4, 4)  # Legger til x-aksen
plt.xlabel("x")
plt.ylabel("y")
plt.title(r"Grafen til $f$ og $f'$")
plt.grid()
plt.legend(fontsize=16)
plt.show()
_images/plotte_13_0.png