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()
Løsningsforslag
Tabellen slutter på punktet (0,0) for å “lukke” figuren. Figuren begynner på (0,0), men kan selvsagt begynne på andre punkter.
Et par tips kan være å lage “tabellen” lengre.
x = [1, 2, 2.5, 2, 1, 0.5, 1]
y = [0, 0, 0.87, 1.74, 1.74, 0.87, 0]Disse punktene er funnet ved hjelp av litt matematikk på bakrommet. Men poenget er at man kan bruke denne måten i pyplot også til å lage geometriske figurer. Tabellene ser ut til å være av ulik lengde, men det er kun på forskjeller i antall desimaler.
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.


Figure 1:Sirkel og trekant

Figure 2:trekant

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 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
