Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Zuordnung von Marker-Eigenschaften zu multivariaten Daten#
Dieses Beispiel zeigt, wie verschiedene Eigenschaften von Markern verwendet werden können, um multivariate Datensätze zu plotten. Hier stellen wir einen erfolgreichen Baseballwurf als Smiley-Gesicht dar, wobei die Markergröße der Fähigkeit des Werfers, die Markerrotation dem Abflugwinkel und der Schub der Markerfarbe zugeordnet ist.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize
from matplotlib.markers import MarkerStyle
from matplotlib.text import TextPath
from matplotlib.transforms import Affine2D
SUCCESS_SYMBOLS = [
TextPath((0, 0), "☹"),
TextPath((0, 0), "😒"),
TextPath((0, 0), "☺"),
]
N = 25
np.random.seed(42)
skills = np.random.uniform(5, 80, size=N) * 0.1 + 5
takeoff_angles = np.random.normal(0, 90, N)
thrusts = np.random.uniform(size=N)
successful = np.random.randint(0, 3, size=N)
positions = np.random.normal(size=(N, 2)) * 5
data = zip(skills, takeoff_angles, thrusts, successful, positions)
cmap = plt.colormaps["plasma"]
fig, ax = plt.subplots()
fig.suptitle("Throwing success", size=14)
for skill, takeoff, thrust, mood, pos in data:
t = Affine2D().scale(skill).rotate_deg(takeoff)
m = MarkerStyle(SUCCESS_SYMBOLS[mood], transform=t)
ax.plot(pos[0], pos[1], marker=m, color=cmap(thrust))
fig.colorbar(plt.cm.ScalarMappable(norm=Normalize(0, 1), cmap=cmap),
ax=ax, label="Normalized Thrust [a.u.]")
ax.set_xlabel("X position [m]")
ax.set_ylabel("Y position [m]")
plt.show()
Gesamtlaufzeit des Skripts: (0 Minuten 1,064 Sekunden)