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()
Throwing success

Tags: Komponente: Marker Styling: Farbe Styling: Form Level: Anfänger Zweck: Spaß

Gesamtlaufzeit des Skripts: (0 Minuten 1,064 Sekunden)

Galerie generiert von Sphinx-Gallery