Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Geometri med pyplot

Mange har antakeligvis brukt turtle til å programmere forskjellige figurer. Turtle fungerer bra til dette. Man kan også bruke matplotlib.pyplot, som er et eget biblitek med funksjoner spesielt for visualiseringa av data. F.eks. grafer, diagrammer, figurer og mye mer. Både 2D og 3D.

Litt utforsking med pyplot

Les over koden under. Legg merke det er lagt til ekstra linjeskift for å skape luft i koden. Du kan forandre på det meste men x og y er to lister som tilsammen er som en vanlig funksjonstabell for plotting av punkter til en graf. Det kommer oppgaver etter koden.

import matplotlib.pyplot as plt




# Punkter i firkanten
x = [0, 4, 4, 0, 0]
y = [0, 0, 3, 3, 0]               # greit å forstå mulighetene her



plt.plot(x, y)                   # plotter
plt.gca().set_aspect('equal')    # riktig geometrisk forhold
# plt.text(A[0], A[1]-0.2, f"{vA:.1f}°")
plt.axis("on")                   # sett til off hvis du vil fjerne akser og benevning.
plt.title("Firkant")
plt.show()
<Figure size 640x480 with 1 Axes>

Ved bruk av en slik enkel “tabell” som består av to lister, x og y, så kan man visualisere data i f.eks. andre typer grafer eller f.eks diagrammer som stolpe eller søyle diagram. I dette opplegget skal vi ikke gå den veien

Hvordan utforske mangekanter med python og matplotlib?

For kunne bruke matplotlib.pyplot som et verktøy for visualisering så er det viktig at vi tar en kikk på matematikken. I det følgende segmentet skal vi se på hvordan vi kan regne ut x- og y-koordinatene til etthvert punkt på listen.

Vi skal se på noen figurer fra Geogebra som forklarer hvordan sammenhengen er med vinkler og x,y-koordinatene.

Geometrisk figur laget i Python
Plott 1

Figure 1:Sirkel og trekant

Plott 2

Figure 2:trekant

Plott 3

Figure 3:trekant 2

Figuren over til venstre viser at vi tenker at en sektor i sirkelen som består av punktene A, C og D. Figuren over til høyre viser denne sektoren bedre med vinkel α\alpha som denne gangen er på ca. 27 °. Vi ser på figurene over at koordinatene til punktet D,er det neste punktet programmet under skal “tegne” opp og deretter fortsette med neste

import matplotlib.pyplot as plt
import math

# Antall sider
n = 7   # prøv 3, 4, 5, 8, 12 …

# Radius og sentrum
# Velger radius = 3 for å ha størrelse på figuren. 
# Dersom du velger 0 så har figuren ikke omfang. 
radius = 3              
cx = 0
cy = 0

x = []
y = []

# Regn ut punktene
for i in range(n):
    vinkel = (2 * math.pi * i / n) + (math.pi/2)
    x.append(cx + radius * math.cos(vinkel) )
    y.append(cy + radius * math.sin(vinkel) )
    print((vinkel/math.pi * 360)/2)
    #print(vinkel)

#print(round(x,2))
#print(round(y,2))

# Lukk figuren
x.append(x[0])
y.append(y[0])

# Tegn mangekanten
plt.fill(x, y, color="skyblue", edgecolor="blue", alpha=0.5)
plt.plot(x, y)
# plt.scatter(x[:-1], y[:-1])

plt.gca().set_aspect("equal")
plt.axis("off")
plt.title("Regulær mangekant med " + str(n) + " sider")
plt.show()
90.0
141.42857142857142
192.85714285714286
244.2857142857143
295.7142857142857
347.14285714285717
398.5714285714286
<Figure size 640x480 with 1 Axes>