Added Lecture 4

This commit is contained in:
2024-11-15 14:07:18 +01:00
parent 796653da22
commit 2776e66c5b
9 changed files with 5764 additions and 40 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -48,7 +48,7 @@
"source": [
"# Was ist NumPy\n",
"\n",
"NumPy steht für *Numerical Python*, ist OpenSource und wird mittlerweile von nahezu jedem Python Entwickeler verwendet. Dabei ist das Core Feature von NumPy seine effiziente Implementierung eines n-dimensionales Arrays in C, welches in Python verwendet werden kann. Hinzu kommt eine Hülle an Funktionen wie effiziente Zufallsalgorithmen und mathematische Funktionen aus den unterschiedlichten Bereichen der Statistik und numerischen Berechnung, welche alle für NumPy Arrays Optimiert sind. Im folgenden wollen wir den Umgang mit NumPy Arrays lernen. \n",
"NumPy steht für *Numerical Python*, ist OpenSource und wird mittlerweile von nahezu jedem Python Entwickeler verwendet. Dabei ist das Core Feature von NumPy seine effiziente Implementierung eines n-dimensionales Arrays in C, welches in Python verwendet werden kann. Hinzu kommt eine Hülle an Funktionen wie effiziente Zufallsalgorithmen und mathematische Funktionen aus den unterschiedlichten Bereichen der Statistik und numerischen Berechnung, welche alle für NumPy Arrays optimiert sind. Im Folgenden wollen wir den Umgang mit NumPy Arrays lernen. \n",
"\n",
"__Für dieses Notebook schauen Sie bitte in die [NumPy Docs](https://numpy.org/doc/stable/reference/index.html)!!!__ Dort sind alle Funktionen beschrieben die wir hier bearbeiten und noch mehr!\n",
"\n",
@@ -71,7 +71,7 @@
"source": [
"# Was ist Matplotlib\n",
"\n",
"Matplotlib ist eine Python Bibliothek zum (interaktiven) Visualisieren von Daten. Die Bibliothek intergiert sich super mit anderen viel Benutzten Python Bibliotheken wie NumPy. Der Vorteil in Kombination mit Jupyter besteht in der direkten Ausgabe eines Plots auf dem Bildschirm.\n",
"Matplotlib ist eine Python Bibliothek zum (interaktiven) Visualisieren von Daten. Die Bibliothek integriert sich gut mit anderen viel benutzten Python Bibliotheken wie NumPy. Der Vorteil der Kombination mit Jupyter besteht in der direkten Ausgabe eines Plots auf dem Bildschirm.\n",
"\n",
"__Nutzen Sie für diese Aufgabe gerne die [Matplotlib Reference](https://matplotlib.org/stable/users/index.html)__\n",
"\n",
@@ -150,13 +150,13 @@
"source": [
"# Was ist ein Array?\n",
"\n",
"Ein Array ist eine kontinuierliche Datenstrucktur. Dabei werden die Daten in Reihe im Arbeitsspeicher hinterlegt, vergleichbar mit der Python Liste.\n",
"Ein Array ist eine kontinuierliche Datenstruktur. Dabei werden die Daten in Reihe im Arbeitsspeicher hinterlegt, vergleichbar mit der Python Liste.\n",
"\n",
"## Erstellen von Arrays\n",
"\n",
"Alle folgenden Beispiele finden Sie im [Beginners Guide](https://numpy.org/doc/stable/user/absolute_beginners.html).\n",
"\n",
"Für unser erstes Beispiel erstellen wir aus einer Python liste ein [NumPy Array](https://numpy.org/doc/stable/reference/arrays.html)."
"Für unser erstes Beispiel erstellen wir aus einer Python Liste ein [NumPy Array](https://numpy.org/doc/stable/reference/arrays.html)."
]
},
{
@@ -306,7 +306,7 @@
}
},
"source": [
"Diese Datenstrucktur wird Allgemein auch Matrix gennant. Der Zugriff auf ein Element einer Matrix folgt nach dem Prinzip \"Spalte->Reihe\". Die erste Spalte ist demnach:"
"Diese Datenstruktur wird Allgemein auch Matrix gennant. Der Zugriff auf ein Element einer Matrix folgt nach dem Prinzip \"Spalte->Reihe\". Die erste Spalte ist demnach:"
]
},
{
@@ -353,7 +353,7 @@
}
},
"source": [
"Der zugriff auf ein einzelnes element erfolgt dann analog:"
"Der Zugriff auf ein einzelnes Element erfolgt dann Analog:"
]
},
{
@@ -400,7 +400,7 @@
}
},
"source": [
"Oder mit der NumPys eigener Syntax `arr[<spalte>, <reihe>]`"
"Oder mit NumPys eigener Syntax `arr[<spalte>, <reihe>]`"
]
},
{
@@ -449,12 +449,12 @@
"source": [
"## Platzreservierung\n",
"\n",
"Falls bekannt ist wie viele Elemente ein Array im späteren Programmverlauf haben soll, bietet einem NumPy die möglichkeit diesen Platz im speicher gewissermaßen zu reservieren.\n",
"Falls bekannt ist, wie viele Elemente ein Array im späteren Programmverlauf haben soll, bietet einem NumPy die Möglichkeit diesen Platz im Speicher gewissermaßen zu reservieren.\n",
"Hierfür gibt es einige Funktionen.\n",
"\n",
"### Ones\n",
"\n",
"1 Dimensionales NumPy Array der größe 10 mit 1 gefüllt:"
"1 Dimensionales NumPy Array der Größe 10 mit 1 gefüllt:"
]
},
{
@@ -552,7 +552,7 @@
"source": [
"### Empty\n",
"\n",
"Analog mit zufälligen Werten (bzw. Werte die bereits an der Speicherstelle waren, meistens 0):"
"Analog mit zufälligen Werten (bzw. Werte, die bereits an der Speicherstelle waren, meistens 0):"
]
},
{
@@ -812,7 +812,7 @@
"\n",
"*1 Punkt*\n",
"\n",
"Erstellen Sie ein NumPy Array mit 11 Elementen mittels `linspace`, Dabei soll der Startwert = -4 und der Endwert = 17 sein. Speichern Sie das Ergbniss in der Variablen `x_scale`. "
"Erstellen Sie ein NumPy Array mit 11 Elementen mittels `linspace`. Dabei soll der Startwert = -4 und der Endwert = 17 sein. Speichern Sie das Ergbniss in der Variablen `x_scale`. "
]
},
{
@@ -912,8 +912,8 @@
"Wie dem [Getting Started](https://matplotlib.org/stable/users/getting_started/index.html#getting-started) Beispiel zu entnehmen, wollen wir einmal die Sinus Funktion plotten.\n",
"\n",
"Dazu brauchen wir zwei Attribute:\n",
"1. Die x-Skala - Dies kann die Länge eines Datensets sein, oder ein allegemeiner Linespace. Aufjedenfall eine Liste bzw. Array.\n",
"2. Die y-Skala - Im Allgemeinen die Werte eines zu plottenden Datensets. Aufjedenfall auch eine Liste bzw. Array.\n",
"1. Die x-Skala - Dies kann die Länge eines Datensets sein, oder ein allgemeiner Linespace. Auf jeden Fall eine Liste bzw. Array.\n",
"2. Die y-Skala - Im Allgemeinen die Werte eines zu plottenden Datensets. Auf jeden Fall auch eine Liste bzw. Array.\n",
"\n",
"Plotten wir im Folgenden die Sinus Funktion. Eine der schönen Eigenschaften der Sinus Funktion ist, dass diese sich nach dem Intervall $[0...2\\pi]$ wiederholt. Daher enthält die x-Skala einen linespace von $[0...2\\pi]$. Als Wert für $\\pi$ wird die NumPy Konstante [np.pi](https://numpy.org/doc/stable/reference/constants.html#numpy.pi) verwendet.\n",
"\n",
@@ -1027,7 +1027,7 @@
"source": [
"## Aufgabe - Erster eigener Plot Square Root\n",
"\n",
"Analog zu voheriger Erklärung Plotten Sie im folgenden die Funktion Square Root Mathematisch definiert als $f(x) = \\sqrt x; \\quad x \\geq 0$.\n",
"Analog zu voheriger Erklärung plotten Sie im folgenden die Funktion Square Root, Mathematisch definiert als $f(x) = \\sqrt x; \\quad x \\geq 0$.\n",
"\n",
"Gehen Sie dabei wie folgt vor:\n",
"1. Definieren Sie einen **geeigneten** [Linespace](https://numpy.org/doc/stable/reference/generated/numpy.linspace.html#numpy-linspace) für die Zahlenraum 0...100. (Tipp: Achten Sie auf die Definition! Die Wurzel ist nur für positive Zahlen definiert.)\n",
@@ -1087,9 +1087,9 @@
"source": [
"# Styling\n",
"\n",
"Da bei mehreren Plots der Überblick schnell verloren geht beschäftigen wir uns im folgenden mit dem Styling. Dabei gehen wir im Schnelldurchlauf durch alle Parameter.\n",
"Da bei mehreren Plots der Überblick schnell verloren geht, beschäftigen wir uns im folgenden mit dem Styling. Dabei gehen wir im Schnelldurchlauf durch alle Parameter.\n",
"\n",
"Die Grundlage für alle folgenden Plots werden in nächster Zelle gesetzt."
"Die Grundlage für alle folgenden Plots werden in der nächsten Zelle gesetzt."
]
},
{
@@ -1129,7 +1129,7 @@
"source": [
"## Farbe ändern\n",
"\n",
"Die Standard Farbe für den ersten Plot ist immer Blau. Um die Farbe zu verändern wird `plt.plot` der Parameter `color` übergeben. Dieser erwartet einen String. Für eine genauere Erläuterung lesen Sie die Dokumentation zu [Specifying color](https://matplotlib.org/stable/users/explain/colors/colors.html). Für dieses Notebook werden die Beispiele mit den \"Single Character Shorthands\" (Aus der Dokumentation zu entnehmen) ausgestattet.\n",
"Die Standard Farbe für den ersten Plot ist immer Blau. Um die Farbe zu verändern wird `plt.plot` der Parameter `color` übergeben. Dieser erwartet einen String. Für eine genauere Erläuterung, lesen Sie die Dokumentation zu [Specifying color](https://matplotlib.org/stable/users/explain/colors/colors.html). Für dieses Notebook werden die Beispiele mit den \"Single Character Shorthands\" (Aus der Dokumentation zu entnehmen) ausgestattet.\n",
"\n",
"Plotten wir den Sinus nun in Rot:"
]
@@ -1181,7 +1181,7 @@
"source": [
"## Titel für den Plot setzen\n",
"\n",
"Dafür wird [plt.title](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.title.html) der Paramter wird als String übergeben:"
"Dafür wird [plt.title](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.title.html) der Paramter als String übergeben:"
]
},
{
@@ -1232,7 +1232,7 @@
"source": [
"## Legende und Labels\n",
"\n",
"Um eine Legende anzuzeigen muss vor `plt.show` die Funktion [plt.legend](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html) aufgerufen werden. Damit dies Wirkung zeigt braucht muss jeder Plot mit dem Parameter `label` (als String) ausgezeichnet werden. Plotten wir im Folgenden den Sinus und Kosinus mit entsprechenden Labels."
"Um eine Legende anzuzeigen, muss vor `plt.show` die Funktion [plt.legend](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html) aufgerufen werden. Damit dies Wirkung zeigt, muss jeder Plot mit dem Parameter `label` (als String) ausgezeichnet werden. Plotten wir im Folgenden den Sinus und Kosinus mit entsprechenden Labels."
]
},
{
@@ -1284,7 +1284,7 @@
"source": [
"## Linestyle\n",
"\n",
"Die letze wichtige Eigenschaft ist das Setzen eines Linestyles. Dazu wird `plt.plot` der parameter `linestyle` als String übergeben. Entnehmen Sie die verschiednen Linestyles bitte der Dokumentation zu [Linestyles](https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html).\n",
"Die letze wichtige Eigenschaft ist das Setzen eines Linestyles. Dazu wird `plt.plot` der Parameter `linestyle` als String übergeben. Entnehmen Sie die verschiedenen Linestyles bitte der Dokumentation zu [Linestyles](https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html).\n",
"\n",
"Sinus als `dashed` line:"
]
@@ -1338,12 +1338,12 @@
"\n",
"*8 Punkte*\n",
"\n",
"In der nächsten Aufgabe wollen wir gleich zwei Funktionen Plotten. $f(x) = \\sqrt x; x \\geq 0$ und $g(x) = x^2$.\n",
"In der nächsten Aufgabe wollen wir gleich zwei Funktionen plotten. $f(x) = \\sqrt x; x \\geq 0$ und $g(x) = x^2$.\n",
"\n",
"Gehen Sie dabei wie folgt vor:\n",
"1. Definieren Sie einen geeigneten [Linespace](https://numpy.org/doc/stable/reference/generated/numpy.linspace.html#numpy-linspace) für die Zahlenraum 0...3. (Tipp: Achten Sie auf die Definition! Die Wurzel ist nur für positive Zahlen definiert.)\n",
"2. Berechnen Sie mittels der Funktion [np.sqrt](https://numpy.org/doc/stable/reference/generated/numpy.sqrt.html#numpy.sqrt) die Werte für die Wurzel.\n",
"3. Berechnen Sie mittels der Funktion [np.square](https://numpy.org/doc/stable/reference/generated/numpy.square.html#numpy-square) die Werte für die Quadrat Zahlen\n",
"3. Berechnen Sie mittels der Funktion [np.square](https://numpy.org/doc/stable/reference/generated/numpy.square.html#numpy-square) die Werte für die Quadratzahlen\n",
"4. Geben Sie den beiden Plots die Farben Grün & Rot. Nutzen Sie gerne die [Color Shorthands](https://matplotlib.org/stable/users/explain/colors/colors.html) aus der Dokumentation.\n",
"5. Plotten Sie die Square Funktion mit dem Linestyle `dashdot`, wie der Dokumentation zu entnehmen [Linestyles](https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html)\n",
"6. Geben Sie den beiden Plots angemessene Labels.\n",
@@ -1424,7 +1424,7 @@
"source": [
"# Warum Zufall?\n",
"\n",
"Für statistische Analysen jeglicher Art ist es wichtig seine Werkzeuge zu verstehen. Da nicht immer direkt ein Dataset vorliegt oder dieses zurzeit noch im Erstellungsprozess ist, gibt es die Möglichkeit die mathematischen und programmatischen Werzeuge zuvor an nachvollziebaren Zufallsdaten zu testen. Dabei wollen wir in dieser Übung lernen, was Zufall ist, wie Zufallsgeneratoren funktionieren und wie der Zufall auf bestimmte Art manipuliert werden kann.\n",
"Für statistische Analysen jeglicher Art ist es wichtig seine Werkzeuge zu verstehen. Da nicht immer direkt ein Dataset vorliegt, oder dieses zurzeit noch im Erstellungsprozess ist, gibt es die Möglichkeit, die mathematischen und programmatischen Werzeuge zuvor an nachvollziebaren Zufallsdaten zu testen. Dabei wollen wir in dieser Übung lernen, was Zufall ist, wie Zufallsgeneratoren funktionieren und wie der Zufall auf bestimmte Art manipuliert werden kann.\n",
"\n",
"---"
]
@@ -1478,11 +1478,11 @@
"\n",
"Wenn $ c = 0 $ dann nennt man den Generator auch _Multiplicative Congruent Generator (MCG)_.\n",
"\n",
"Die Werte haben folgenden nutzen in der Funktion:\n",
"Die Werte haben folgenden Nutzen in der Funktion:\n",
"\n",
"- $X_n$ ist der Startwert oder seed\n",
"- $X_{n+1}$ ist der folgewert der im nächsten schritt für $X_n$ eingesetzt wird\n",
"- $a$ ist der Vorfaktor vom Startwert dieser wird skaliert, deshalb wird er skalar gennant\n",
"- $X_{n+1}$ ist der Folgewert der im nächsten Schritt für $X_n$ eingesetzt wird\n",
"- $a$ ist der Vorfaktor vom Startwert. Dieser wird skaliert, deshalb wird er Skalar gennant\n",
"- $c$ ist das hinzuaddierte Offset\n",
"- $m$ ist der Restklassenring oder auch Modulus genannt"
]
@@ -1508,7 +1508,7 @@
"Schreibe einen _Linear Congruent Generator_ mit dem funktionsnamen `lcg`.\n",
"\n",
"- Nutze die oben gegebene Definition\n",
"- Checke auch das Werte nicht verwendet werden dürfen (Bsp. $n \\geq 0$)\n",
"- Prüfe auch, das Werte nicht verwendet werden dürfen (Bsp. $n \\geq 0$)\n",
"- `lcg` muss ein unendlicher Generator sein"
]
},
@@ -1666,9 +1666,9 @@
" </figure>\n",
" <div style=\"margin-left: 40px; max-width: 60%; word-wrap:break-word;\">\n",
" <br/>\n",
" <p><i>Linear Congruent Generators</i> zeichnen sich durch ihre Stabilität und Geschwindigkeit als Hervorragende Zufallsgeneratoren. Doch 2014 gelang Melissa E. O'Neil ein neuer durchbruch in der Konzeption von Pseudozufallsgeneratoren. Das Problem mit existierenden Zufallsgeneratoren ist entweder ihre Stabilität (Wie vorhersehbar die Zufallszahlen sind) oder ihrer Geschwindigkeit (Wie lange der Zufallsgenerator braucht um die nächste Zufallszahl zu errechnen).</p>\n",
" <p>Ihr Durchbruch gelang indem Sie die Vorteile eines <i>Linear Congruent Generators</i> mit dem eines <i>XorShift Generators</i> verband. Dadurch erreichte Sie nicht nur eine Normalverteilung in den generierten Zufallszahlen (und eine damit einhergende Stabilität), Sie hatte auch eine Family von schnellen einfachen Algorithmen entwickeln. Diese nennen sich <i>PCG - Permuted Congruential Generator</i>.</p>\n",
" <p>Die Implementierungsdetails lassen wir im nächsten Schritt aus, da diese sich nicht einfach in Python umzusetzen sind. Auf der Webseite <a href=\"https://www.pcg-random.org\" >pcg-random.org</a> lassen sich implemtierungen für C & C++ finden. Als weiterführende Literatur ist <a href=\"https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf\" >PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation - Melissa E. ONeill</a> als Literatur angegeben.</p>\n",
" <p><i>Linear Congruent Generators</i> zeichnen sich durch ihre Stabilität und Geschwindigkeit als Hervorragende Zufallsgeneratoren. Doch 2014 gelang Melissa E. O'Neil ein neuer Durchbruch in der Konzeption von Pseudozufallsgeneratoren. Das Problem mit existierenden Zufallsgeneratoren ist entweder ihre Stabilität (Wie vorhersehbar die Zufallszahlen sind) oder ihre Geschwindigkeit (Wie lange der Zufallsgenerator braucht um die nächste Zufallszahl zu errechnen).</p>\n",
" <p>Ihr Durchbruch gelang, indem Sie die Vorteile eines <i>Linear Congruent Generators</i> mit dem eines <i>XorShift Generators</i> verband. Dadurch erreichte Sie nicht nur eine Normalverteilung in den generierten Zufallszahlen (und eine damit einhergende Stabilität), Sie hatte auch eine Family von schnellen einfachen Algorithmen entwickelt. Diese nennen sich <i>PCG - Permuted Congruential Generator</i>.</p>\n",
" <p>Die Implementierungsdetails lassen wir im nächsten Schritt aus, da diese nicht einfach in Python umzusetzen sind. Auf der Webseite <a href=\"https://www.pcg-random.org\" >pcg-random.org</a> lassen sich Implemtierungen für C & C++ finden. Als weiterführende Literatur ist <a href=\"https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf\" >PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation - Melissa E. ONeill</a> als Literatur angegeben.</p>\n",
" </div>\n",
"</div>\n",
"\n",
@@ -1697,8 +1697,8 @@
"\n",
"- Gegeben ist der Anfangszustand des Generators.\n",
"- Nutze die Dokumentation und rufe den `default_rng` aus dem `numpy.random` Modul, **20** mal auf speichere die Werte in der variablen `pcgs`. *(Tipp: Nutze ein NumPy Array)*\n",
"- Sortiere im nächsten Schritt die in `pcgs` gespeicherten Werte und speicher diese in `pcgs_sorted`\n",
"- Plotte sinnvoll beide Array, gestalte den Plott angemessen."
"- Sortiere im nächsten Schritt die in `pcgs` gespeicherten Werte und speichere diese in `pcgs_sorted`\n",
"- Plotte sinnvoll beide Array. Gestalte den Plot angemessen."
]
},
{
@@ -1816,7 +1816,7 @@
"\n",
"# Plot Types\n",
"\n",
"Im folgenden Kapitel beschäftigen wir uns mit verschiedensten Plot typen."
"Im folgenden Kapitel beschäftigen wir uns mit verschiedensten Plot Typen."
]
},
{
@@ -1890,9 +1890,9 @@
"source": [
"## Bar Charts\n",
"\n",
"Beliebt sind Barcharts. Dazu werden aber mehrere Parameter benötigt. Da einfache mathematische Funktionen bei dieser Art Plot keinen Sinn ergeben.\n",
"Beliebt sind Barcharts. Dazu werden aber mehrere Parameter benötigt, da einfache mathematische Funktionen bei dieser Art Plot keinen Sinn ergeben.\n",
"\n",
"Konsultieren wir dafür folgendes Beispiel.\n",
"Konsultieren wir dafür folgendes Beispiel:\n",
"\n",
"Wir wollen wissen wie viele Kinder an einer Grundschule in jeder Klassenstufe sind.\n",
"Dazu benötigen wir 2 Listen.\n",
@@ -1984,7 +1984,7 @@
"source": [
"### Bessere Datenrepresentation\n",
"\n",
"Da die Daten aus `classes` & `kids` miteinander eine Verbindung teilen wäre die Repräsentation mittels Dictionary die klügere Wahl um keine Fehler in den Plot zu bringen.\n",
"Da die Daten aus `classes` & `kids` miteinander eine Verbindung teilen wäre, die Repräsentation mittels Dictionary die klügere Wahl, um keine Fehler in den Plot zu bringen.\n",
"\n",
"Mittels der `.keys` & `.values` Funktion auf dem Dictionary lassen sich dann die Daten gezielt plotten.\n",
"\n",
@@ -2167,7 +2167,7 @@
"source": [
"### X-Label\n",
"\n",
"Analog Dazu die Beschriftung der X-Achse mit `plt.xlabel`."
"Analog dazu die Beschriftung der X-Achse mit `plt.xlabel`."
]
},
{
@@ -2508,7 +2508,7 @@
}
},
"source": [
"Zum setzen von Prozentwerten wird der Parameter `autopct` verwendet. Dieser nutzt einen Format String oder eine Funktion zum definieren der Werte. Schaue dazu für mehr in die Dokumentation für [autpct](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html#matplotlib-pyplot-pie), eine Dokumentation zu Formatstrings findest du [hier](https://www.geeksforgeeks.org/format-specifiers-in-c/).\n",
"Zum Setzen von Prozentwerten wird der Parameter `autopct` verwendet. Dieser nutzt einen Format String oder eine Funktion zum Definieren der Werte. Schaue dazu für mehr in die Dokumentation für [autpct](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html#matplotlib-pyplot-pie), eine Dokumentation zu Formatstrings findest du [hier](https://www.geeksforgeeks.org/format-specifiers-in-c/).\n",
"\n",
"Beispiel für Prozentwerte:"
]
@@ -2626,7 +2626,7 @@
}
},
"source": [
"Zum herausnehmen von Kuchenstücken gibt es den Parameter `explode` dieser erwartet eine Liste mit Fließkommezahlen die zwischen 0.0 - Standardwert und 1.0 - absoluter Explode liegen.\n",
"Zum Herausnehmen von Kuchenstücken gibt es den Parameter `explode`. Dieser erwartet eine Liste mit Fließkommazahlen die zwischen 0.0 - Standardwert und 1.0 - absoluter Explode liegen.\n",
"\n",
"Beispiel Klasse 3 ist vom Ursprung 20% entfernt:"
]
@@ -2784,7 +2784,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
"version": "3.12.5"
}
},
"nbformat": 4,