Matplotlib -Scatter
Streudiagramme erstellen
Mit Pyplot können Sie die scatter()
Funktion verwenden, um ein Streudiagramm zu zeichnen.
Die scatter()
Funktion zeichnet einen Punkt für jede Beobachtung. Es benötigt zwei Arrays gleicher Länge, eines für die Werte der x-Achse und eines für die Werte auf der y-Achse:
Beispiel
Ein einfaches Streudiagramm:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
plt.show()
Ergebnis:
Die Beobachtung im obigen Beispiel ist das Ergebnis von 13 vorbeifahrenden Autos.
Die X-Achse zeigt, wie alt das Auto ist.
Die Y-Achse zeigt die Geschwindigkeit des Autos, wenn es vorbeifährt.
Gibt es Zusammenhänge zwischen den Beobachtungen?
Es scheint, dass je neuer das Auto ist, desto schneller fährt es, aber das könnte Zufall sein, schließlich haben wir nur 13 Autos angemeldet.
Plots vergleichen
Im obigen Beispiel scheint es einen Zusammenhang zwischen Geschwindigkeit und Alter zu geben, aber was ist, wenn wir auch die Beobachtungen eines anderen Tages aufzeichnen? Wird uns das Scatterplot noch etwas sagen?
Beispiel
Zeichnen Sie zwei Diagramme auf derselben Figur:
import matplotlib.pyplot as plt
import numpy as np
#day one, the age
and speed of 13 cars:
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x,
y)
#day two, the age and speed of 15 cars:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y)
plt.show()
Ergebnis:
Hinweis: Die beiden Diagramme werden mit zwei verschiedenen Farben gezeichnet, standardmäßig blau und orange. Sie werden später in diesem Kapitel lernen, wie Sie die Farben ändern.
Wenn ich die beiden Diagramme vergleiche, kann ich mit Sicherheit sagen, dass sie uns beide dieselbe Schlussfolgerung liefern: Je neuer das Auto, desto schneller fährt es.
Farben
Mit dem Argument color
oder können Sie für jedes Streudiagramm Ihre eigene Farbe festlegen
:c
Beispiel
Stellen Sie Ihre eigene Farbe der Markierungen ein:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x,
y, color = 'hotpink')
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')
plt.show()
Ergebnis:
Färbe jeden Punkt
Sie können sogar eine bestimmte Farbe für jeden Punkt festlegen, indem Sie ein Array von Farben als Wert für das
c
Argument verwenden:
Hinweis: Sie können dafür nicht das color
Argument verwenden, sondern nur das c
Argument.
Beispiel
Stellen Sie Ihre eigene Farbe der Markierungen ein:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
Ergebnis:
Farbkarte
Das Matplotlib-Modul verfügt über eine Reihe verfügbarer Farbkarten.
Eine Colormap ist wie eine Liste von Farben, wobei jede Farbe einen Wert zwischen 0 und 100 hat.
Hier ist ein Beispiel für eine Farbkarte:
Diese Farbkarte heißt „viridis“ und reicht, wie Sie sehen können, von 0, was eine violette Farbe ist, bis zu 100, was eine gelbe Farbe ist.
So verwenden Sie die ColorMap
Sie können die Colormap mit dem Schlüsselwortargument
cmap
mit dem Wert der Colormap angeben, in diesem Fall 'viridis'
eine der integrierten Colormaps, die in Matplotlib verfügbar sind.
Außerdem müssen Sie ein Array mit Werten (von 0 bis 100) erstellen, einen Wert für jeden Punkt im Streudiagramm:
Beispiel
Erstellen Sie ein Farbarray und geben Sie eine Farbkarte im Streudiagramm an:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0,
10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.show()
Ergebnis:
Sie können die Farbkarte in die Zeichnung einbeziehen, indem Sie die plt.colorbar()
Anweisung einfügen:
Beispiel
Fügen Sie die tatsächliche Farbkarte hinzu:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0,
10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()
Ergebnis:
Verfügbare ColorMaps
Sie können eine der integrierten Farbkarten auswählen:
Name | Reverse | |||
---|---|---|---|---|
Accent | Accent_r | |||
Blues | Blues_r | |||
BrBG | BrBG_r | |||
BuGn | BuGn_r | |||
BuPu | BuPu_r | |||
CMRmap | CMRmap_r | |||
Dark2 | Dark2_r | |||
GnBu | GnBu_r | |||
Greens | Greens_r | |||
Greys | Greys_r | |||
OrRd | OrRd_r | |||
Oranges | Oranges_r | |||
PRGn | PRGn_r | |||
Paired | Paired_r | |||
Pastel1 | Pastel1_r | |||
Pastel2 | Pastel2_r | |||
PiYG | PiYG_r | |||
PuBu | PuBu_r | |||
PuBuGn | PuBuGn_r | |||
PuOr | PuOr_r | |||
PuRd | PuRd_r | |||
Purples | Purples_r | |||
RdBu | RdBu_r | |||
RdGy | RdGy_r | |||
RdPu | RdPu_r | |||
RdYlBu | RdYlBu_r | |||
RdYlGn | RdYlGn_r | |||
Reds | Reds_r | |||
Set1 | Set1_r | |||
Set2 | Set2_r | |||
Set3 | Set3_r | |||
Spectral | Spectral_r | |||
Wistia | Wistia_r | |||
YlGn | YlGn_r | |||
YlGnBu | YlGnBu_r | |||
YlOrBr | YlOrBr_r | |||
YlOrRd | YlOrRd_r | |||
afmhot | afmhot_r | |||
autumn | autumn_r | |||
binary | binary_r | |||
bone | bone_r | |||
brg | brg_r | |||
bwr | bwr_r | |||
cividis | cividis_r | |||
cool | cool_r | |||
coolwarm | coolwarm_r | |||
copper | copper_r | |||
cubehelix | cubehelix_r | |||
flag | flag_r | |||
gist_earth | gist_earth_r | |||
gist_gray | gist_gray_r | |||
gist_heat | gist_heat_r | |||
gist_ncar | gist_ncar_r | |||
gist_rainbow | gist_rainbow_r | |||
gist_stern | gist_stern_r | |||
gist_yarg | gist_yarg_r | |||
gnuplot | gnuplot_r | |||
gnuplot2 | gnuplot2_r | |||
gray | gray_r | |||
hot | hot_r | |||
hsv | hsv_r | |||
inferno | inferno_r | |||
jet | jet_r | |||
magma | magma_r | |||
nipy_spectral | nipy_spectral_r | |||
ocean | ocean_r | |||
pink | pink_r | |||
plasma | plasma_r | |||
prism | prism_r | |||
rainbow | rainbow_r | |||
seismic | seismic_r | |||
spring | spring_r | |||
summer | summer_r | |||
tab10 | tab10_r | |||
tab20 | tab20_r | |||
tab20b | tab20b_r | |||
tab20c | tab20c_r | |||
terrain | terrain_r | |||
twilight | twilight_r | |||
twilight_shifted | twilight_shifted_r | |||
viridis | viridis_r | |||
winter | winter_r |
Größe
Sie können die Größe der Punkte mit dem
s
Argument ändern.
Achten Sie genau wie bei den Farben darauf, dass das Array für Größen die gleiche Länge hat wie die Arrays für die x- und y-Achse:
Beispiel
Legen Sie Ihre eigene Größe für die Markierungen fest:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes)
plt.show()
Ergebnis:
Alpha
Sie können die Transparenz der Punkte mit dem
alpha
Argument anpassen.
Achten Sie genau wie bei den Farben darauf, dass das Array für Größen die gleiche Länge hat wie die Arrays für die x- und y-Achse:
Beispiel
Legen Sie Ihre eigene Größe für die Markierungen fest:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes, alpha=0.5)
plt.show()
Ergebnis:
Kombinieren Sie Farbgröße und Alpha
Sie können eine Farbkarte mit verschiedenen Größen auf den Punkten kombinieren. Dies wird am besten sichtbar, wenn die Punkte transparent sind:
Beispiel
Erstellen Sie zufällige Arrays mit 100 Werten für x-Punkte, y-Punkte, Farben und Größen:
import matplotlib.pyplot as plt
import numpy as np
x =
np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100,
size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()
Ergebnis: