Errata

Wenn Sie einen Fehler im Buch finden, eine Frage haben, oder eine Verbesserung vorschlagen möchten, können Sie mich gerne unter der im Impressum angegebenen E-Mail-Adresse kontaktieren.

Änderungen mit Matplotlib 3.7

Mit Matplotlib 3.7 haben sich einige Änderungen ergeben, die dazu führen, dass einige Programme aus dem Buch nicht mehr korrekt ausgeführt werden oder eine Warnung liefern.

Fehler beim Aufruf von set_data

Bis zur Version 3.6 von Matplotlib konnte man, wenn ein Plot nur aus einem Punkt besteht, für die Koordinaten jeweils eine Zahl angeben. Wenn der Plot aus mehreren Punkten besteht, musste man entsprechend für jede Koordinate eine Sequenz (Liste, Tupel oder ein Array) übergeben. Seit Matplotlib 3.7 muss man stets eine Sequenz übergeben.

Examplarisch sei die Änderung an dem Programm Programm 5.5 erläutert. Dort wurde in Zeile 100 die Position des Hundes wie folgt aktualisiert:

    
plot_hund.set_data(r_hund[n])
    
  
Dabei ist r_hund ein 599×2-Array mit den Koordinaten des Hundes zu jedem berechneten Zeitpunkt. Demzufolge ist r_hund[n] ein eindimensionales Array mit 2 Elementen. Matplotlib 3.7 beschwert sich nun, dass es sich bei den einzelnen Koordinaten um Zahlen handelt und nicht um Sequenzen. Wir müssen daher aus dem Array mit 2 Elementen zunächst ein 2×1-Array erzeugen. Dies gelingt am einfachsten wir folgt:
    
plot_hund.set_data(r_hund[n].reshape(-1, 1))
    
  

Betroffen sind alle Programme, in denen ein Plot mit nur einem einzelnen Punkt erzeugt wird. Während bei den entsprechenden 2-dimensionalen Darstellungen nur eine Warnung erzeugt wird, werden die Programme mit 3-dimensionalen Darstellungen mit einer Fehlermedlung beendet. Die auf dieser Webseite bereitgestellten Programme wurden bereits entsprechend korrigiert.

Warnung beim Erzeugen eines Farbbalkens mit fig.colorbar

In einigen Programmen werden physikalische Größen mithilfe einer Farbtabelle dargestellt. In einigen Fällen wird dazu explizit ein sogenannter Mapper erzeugt, beispielsweise in den Programm Programm 6.4:

  
mapper = mpl.cm.ScalarMappable(cmap=mpl.cm.jet)
  
Später wird dann ein Farbalken wie folgt erzeugt:
  
fig.colorbar(mapper, label='Kraft [N]')
  
Dabei kommt es zu einer Warnung: Der Mapper enthält keinerlei Information darüber, auf welche Axis sich die Farbdarstellung bezieht. Um den Farbbalken darzustellen, muss aber der Platz für den Balken von einer Axis weggenommen werden. Matplotlib muss also erraten, zu welcher Axis der Farbbalken gehört. Dieses Verhalten wird in zukünftigen Versionen von Matplotlib wegfallen. Daher muss man die Axis, auf die sich der Farbbalken bezieht, explizit mithilfe des Arguments ax= angeben:
  
fig.colorbar(mapper, label='Kraft [N]', ax=ax)
  

Betroffen sind alle Programme, in denen ein Farbalken für einen explizit erzeugten Mapper dargestellt werden soll. Die auf dieser Webseite bereitgestellten Programme wurden bereits entsprechend korrigiert.

Kapitel 11

S. 333:

In der Bildunterschrift zu Abb. 11.11 muss es korrekt heißen: »Die gepunkteten Linien stellen die nach dem Reflexionsgesetz erwartete Ausbreitungsrichtung dar, die gestrichelten Linien die nach dem Brechungsgesetz.«