Skip to content

Daten darstellen

Programmieren

Python liefert mächtige Tools um Daten zu visualisieren. Wir versuchen mal unsere Höhendaten mit diesen Tools darzustellen.

Plots von matplotlib ​

Wahrscheinlich musst du zuerst die beiden packages numpy und matplotlib installieren.

Öffne in VSCode einen Terminal und tippe

ps
py -m pip install numpy
py -m pip install matplotlib

Beispiel

Was kommt dabei raus?

python
import matplotlib.pyplot as plot

# Koordinaten vorbereiten
X = []
Y = []
for y in range(-5,6):
    for x in range(-5,6):
        X.append(x)
        Y.append(y)

print(X)
print(Y)

# Höhen berechnen (hier als Funktion der Koordinaten)
Z = []
for i in range(len(X)):
    z = X[i] * Y[i]
    Z.append(z)

print(Z)


# Daten mit matplotlib darstellen
fig = plot.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(X, Y, Z, color='white', edgecolors='grey', alpha=0.5)
ax.scatter(X, Y, Z, c='red')
plot.show()

Aufgabe

Nimm das Beispiel von oben und beantworte die folgenden Fragen:

  • Was macht der Scatter-Plot?
  • Was macht der Trisurf-Plot?

Versuche gute Voraussetzungen für ein 3D-Relief zu erhalten:

  • ev. brauchst du nur einen Plot (und kannst den anderen mit # ausblenden)
  • du kannst die optionalen Argumente anpassen (oder weglassen)

Nun wären wir bereit unsere Höhendaten darzustellen. Das Problem ist noch das Format! Die Plot-Funktionen von matplotlib nehmen als Argumente 3 Listen: eine für x-, eine für y- und eine für die z-Koordinate!

Listen konvertieren ​

Wir müssen also unsere Höhendaten umwandeln oder direkt beim Einlesen in 3 Listen unterteilen. Zudem müssen wir natürlich Zahlen und nicht Text haben!

Aufgabe

Versuche die Daten entsprechen umzuwandeln:
aus der Liste von Punkten

python
[[x1,y1,z1],[x2,y2,z2],[x3,y3,z3],...]

sollten drei Listen von Koordinaten werden:

python
[x1,x2,x3, ...]
[y1,y2,y3, ...]
[z1,z2,z3, ...]

Höhendaten mit matplotlib ​

Aufgabe

Stelle nun unsere Höhendaten mit matplotlib dar!

  • Funktioniert es gut?
  • Was könnte man verbessern?

Gymnasium Kirchenfeld, fts & ros