Skip to content
Snippets Groups Projects
Commit 7f2a0d39 authored by Malte Woidt's avatar Malte Woidt
Browse files

Uebung 04

parent 464a7035
No related branches found
No related tags found
No related merge requests found
source diff could not be displayed: it is too large. Options to address this: view the blob.
%% Cell type:markdown id:e990c2fb-c4c7-470f-8090-86de9651ec50 tags:
# <font color='blue'>**Übung 4 - Module und Zeichnen mit Matplotlib**</font>
%% Cell type:markdown id:9caa439c-ae2c-4871-9b81-950a32f458a2 tags:
## <font color='blue'>**Einleitung**</font>
In den vorherigen Übungen haben wir uns mit den Grundlagen der Programmiersprache Python befasst. Inhalt dieser Übung ist die Verwendung von Modulen. In der letzten Übung haben wir Klassen und die Objektorientierte Programmierung kennen gelernt. Als Beispiel diente eine einfache Klasse um grundlegende Vektorrechnung zu ermöglichen. Vektorrechnung ist etwas, das in vielen Programmen benötigt wird und sicherlich bereits von vielen Programmierern implementiert wurde. Um das Rad nicht bei jedem Programm neu zu erfinden bietet Python ein sogenanntes Modul-System an, durch das Programmcode wiederverwendet werden kann. Ein Modul bietet Klassen oder auch Funktionen an, die von anderen Programmierern wiederverwendet werden können Dabei beschränkt sich ein Modul meistens auf ein spezielles Themengebiet. Ein solches Modul kann selbst in Python geschrieben sein, es gibt allerdings auch viele Module, die in anderen Programmiersprachen programmiert sind, sich allerdings trotzdem mit Python verwenden lassen.\
Module können in Paketen zusammengefasst sein, die sich über einen zentralen Paketmanager namens *pip* automatisch installieren lassen. Viele davon sind im Internet bereitgestellt und lassen sich darüber hinaus sogar automatisch herunterladen. In dieser Übung geht es darum, wie solche Module genutzt werden können. Außerdem geht es um die Verwendung eines konkreten Moduls namens Matplotlib, das im wissenschaftlichen Kontext oft zur Erstellung von Grafiken genutzt wird
### **Weitere Notebooks, die dir helfen könnten**
* Python Grundlagen Teil 1
* Python Grundlagen Teil 2
* OOP Grundlagen
### **Vorkenntnisse**
* Übung 1
* Übung 2
* Übung 3
### **Lernziele**
* Module
* Grundlegende Verwendung von Matplotlib
%% Cell type:markdown id:fdde8bab-000b-452f-aa39-98cbcd11b8f4 tags:
# <font color='blue'>**Abschnitt 1 - Importieren von Modulen**</font>
%% Cell type:markdown id:e082132f-33ef-4956-955f-d7b462d20a14 tags:
Ein Modul kann man sich prinzipiell als eine Sammlung von Klassen, Funktionen und ggf. Variablen vorstellen. Am einfachsten ist es, diese Module mit *import* zu importieren, was immer das komplette Modul lädt. Python selbst bringt automatisch einige Module mit. Diese werden als die Standardbibliothek bezeichnet. Eine vollständige Liste findet sich unter *https://docs.python.org/3/library/*. Ein Beispiel ist die Bibliothek *time*, die verschiedene Funktionen rund um das Thema Zeit beinhaltet
%% Cell type:code id:eee8bebd-4394-4149-b66c-3bad8de9658e tags:
``` python
import time
print(time.localtime())
```
%% Output
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=21, tm_hour=16, tm_min=50, tm_sec=41, tm_wday=0, tm_yday=325, tm_isdst=0)
%% Cell type:markdown id:9765a216-c831-4f97-8f51-de6a908a0cff tags:
Das Beispiel importiert ein Modul mit dem Namen *time*. Das ist möglich, da dieses Modul automatisch mit Python installiert wird. Um Funktionalität im Module *time* (z.B. die Funktion *localtime*, aber auch Klassen oder Variablen) zu nutzen, muss dem Funktionsnamen ein *time.* vorangestellt werden. Ähnlich wie bei der Objektorientierten Programmierung. Der Sinn ist, dass verschiedene Module unter Umständen Funktionen oder Klassen mit identischen Namen beinhalten könnten, was ohne diese Regel zu Problemen führen würde. Jedes Modul kann nur einmal geladen werden. Mehrmaliges Importieren eines Moduls führt zwar nicht zu Fehlern, das Modul wird aber nicht neu geladen. Das kann allerdings nur dann zum Problem werden, wenn man selber Module programmieren möchte. Falls der Modulname zu lang ist, kann man dem Modul in einem Programm auch einen Ersatznamen geben. Es sind auch mehrere Ersatznamen möglich
%% Cell type:code id:4f2c174a-09e9-4044-b7eb-96ce07c6481b tags:
``` python
import time as ti
print (ti.localtime())
```
%% Output
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=21, tm_hour=17, tm_min=0, tm_sec=25, tm_wday=0, tm_yday=325, tm_isdst=0)
%% Cell type:markdown id:7d565fc0-2a58-48bf-9c01-1464b9ecf522 tags:
Das Beispiel macht das selbe, wie die erste Zelle. Das Modul *time* wird lediglich unter dem Alias *ti* in das Programm geladen. Es ist weiterhin möglich, nur einzelne Funktionen aus einem Modul zu laden. Diesen kann optional ein neuer Name gegeben werden
%% Cell type:code id:d142c8f4-5fd4-4299-b914-abbc9b5913fd tags:
``` python
from time import localtime as Lokalzeit
print (Lokalzeit())
```
%% Output
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=21, tm_hour=17, tm_min=2, tm_sec=16, tm_wday=0, tm_yday=325, tm_isdst=0)
%% Cell type:markdown id:482c83c0-cbcd-4d05-a9d9-e1d05e4a4d53 tags:
Das Beispiel importiert nur die Funktion *localtime* aus dem Modul *time*. Im Programm ist sie unter dem Namen *Lokalzeit* verfügbar. Alle drei Beispiele machen das selbe. Welche Methode ein Modul zu importieren die beste ist, hängt von der jeweiligen Situation ab. Mit der möglichkeit *import as* funktioniert es meistens am Einfachsten.\
Module können in Python verschachtelt sein. Das bedeutet ein Modul kann aus mehreren Modulen bestehen, die ihrerseits dann Klassen, Funktionen und Variablen anbieten. Ein Beispiel dafür ist das Modul matplotlib, das ein Modul pyplot enthält. Schaue dir das Grundlagen-Notebook an
%% Cell type:markdown id:33039b46-4f2b-4eea-8254-79061a7504ca tags:
# <font color='blue'>**Abschnitt 2 - Zeichne eine Sinus und eine Kosinusfunktion**</font>
%% Cell type:markdown id:25e7cf2e-5eea-4cd2-a0b7-85959683097a tags:
## <font color='blue'>*Aufgabe*</font>
Erstelle eine Grafik, die eine Sinus- und eine Kosinuskurve zeigt. Die Grafik soll auf der x-Achse von -Pi bis Pi gehen. Die entsprechenden Sinus- und Kosinuswerte sind selbst zu berechnen. Die Grafik soll aus 100 Stützstellen bestehen, die gleichmäßig über die x-Achse verteilt sind. Alle Achsen sollen sinnvoll beschriftet sein und die Grafik soll über eine Legende verfügen. Um an diesem Punkt die Aufgabe etwas besser zu gliedern, besteht sie aus mehreren Teilaufgaben, in denen du auch einige Techniken der vorangegangenen Übungen wiederholen kannst.
%% Cell type:markdown id:348e7767-baf7-42b4-935c-d7496bb4a34c tags:
## <font color='blue'>*Hinweise*</font>
Der Sinus und der Kosinus können über die Funktionen *sin(x)* bzw. *cos(x)* aus dem Modul *math* berechnet werden. Weiterhin enthält das Modul eine Variable namens *pi*
%% Cell type:markdown id:79aa95c6-adc0-40ee-9566-49439896681f tags:
### <font color='blue'>*Teilaufgabe 1*</font>
Um etwas zeichnen zu können, brauchen wir zunächst die Werte der Sinus und der Kosinus Funktion an 100 gleichmäßig verteilten Stellen zwischen -Pi und Pi. Dazu sollen 3 Listen erstellt werden. Eine mit den x-Werten, eine mit den Sinus-Werten und eine mit den Kosinus-Werten. Dafür benötigst du eine Schleife, bei der in jedem Durchgang ein weiterer Wert angehängt wird
### <font color='blue'>*Lösung Teilaufgabe-1*</font>
%% Cell type:code id:f361c08d-ade7-446a-a519-d953c4ea267f tags:
``` python
```
%% Cell type:markdown id:e45669c5-f500-494a-bac4-eb49846204ba tags:
### <font color='blue'>*Teilaufgabe 2*</font>
Um etwas mit Matplotlib warm zu werden, solltest du zu erst versuchen die Sinusfunktion zu zeichnen. Da du nur eine einfache Grafik zeichnen möchtest, kannst du hierfür das *pyplot* interface verwenden. Versuche die Grafik zu beschriften. Die Kurve soll im rot und gestrichelt sein
### <font color='blue'>*Lösung Teilaufgabe-2*</font>
%% Cell type:code id:3b77a06d-a486-45f4-a0e3-ad2fd087ddfd tags:
``` python
```
%% Cell type:code id:704cd96d-5767-4be4-9761-9bec88e62cfd tags:
``` python
```
%% Cell type:markdown id:a9d7fe62-9ffd-418d-819e-ee72a8617bd3 tags:
### <font color='blue'>*Teilaufgabe 3*</font>
Für diese Teilaufgabe soll das Objektorientierte Interface von Matplotlib genutzt werden. Erstelle zunächst ein *Figure*-Objekt für die Zeichnung. Es soll die Größe 5 zu 2.5 besitzen. Die Zeichnung soll einen Graphen enthalten, der sowohl die Sinus und die Kosinus Funktion enthält. Die Sinus-Funktion soll in blau, die Kosinusfunktion in rot dargestellt sein. Außerdem soll die Grafik einen sinnvollen Titel und eine Farblegende besitzen. Die X-Achse soll mit "X", die Y-Achse mit "Y" beschriftet sein
%% Cell type:code id:fb035a92-6fb1-4306-bf47-b585bfa5a43d tags:
``` python
```
%% Cell type:markdown id:3c798465-575f-4d0a-b803-aeb93d023fc0 tags:
# <font color='blue'>**Aufgabe zum selbst probieren**</font>
%% Cell type:markdown id:91ebfd38-aabb-4538-a547-f0fdae15c22d tags:
Probiere ein neue Grafik zu erstellen, in der zwei Graphen untereinander positioniert sind. Einer soll die Sinus-Funktion enthalten, einer die Kosinus-Funktion. Probiere die beschriebenen Möglichkeiten im Grundlagen-Notebook selbst aus. Markiere z.B. das Maximum der Sinus-Funktion mit einem Pfeil. Hinterlege die Grafiken mit einem Hintergrundraster, damit du Werte besser ablesen kannst. Die x- und y-Achse sind momentan noch recht grob in Einerschritten beschriftet. Füge kleinere Markierungen für 0.1-er Schritte in der Beschriftung hinzu
%% Cell type:markdown id:cc3b1290-6063-4985-9ef4-1c035c96582c tags:
# <font color='blue'>**Lösung**</font>
%% Cell type:code id:f2845551-20ea-4d56-be1c-e6dfce2ddadb tags:
``` python
```
Uebung04/anatomy.webp

64 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment