Für mein Diagramm verwende ich einen Olympic Historic Dataset von Olympedia.org, den Joseph Cheng in Kaggle mit einer Public Area-Lizenz.

Screenshot des Datensatzes

Es enthält Ergebnisse der Olympischen Spiele von Athen 1896 bis Peking 2022 auf Athletenebene. Nach einer EDA (Exploratory Knowledge Evaluation) habe ich es in einen Datensatz umgewandelt, der die Anzahl der weiblichen Athleten in jeder Sportart/jedem Occasion professional Jahr angibt. Meine Idee für ein Blasendiagramm ist es, zu zeigen, in welchen Sportarten ein Verhältnis von weiblichen zu männlichen Athleten von 50/50 besteht und wie sich dieses Verhältnis im Laufe der Zeit entwickelt hat.

Meine Plotdaten bestehen aus zwei verschiedenen Datensätzen, einer für jedes Jahr: 2020 Und 1996. Für jeden Datensatz habe ich die Gesamtzahl der Athleten berechnet, die an jedem Occasion teilgenommen haben (athletensumme) und wie viel diese Summe im Vergleich zur Gesamtzahl der Athleten (männlich + weiblich) darstellt (Unterschied). Unten sehen Sie einen Screenshot der Daten:

Screenshot des Plot-Datensatzes

Dies ist mein Ansatz zur Visualisierung:

  • Größenproportionen. Verwenden Sie den Radius der Blasen, um die Anzahl der Athleten professional Sportart zu vergleichen. Größere Blasen stehen für hochkompetitive Veranstaltungen wie Leichtathletik
  • Multivariable Interpretation. Verwendung von Farben zur Darstellung der weiblichen Vertretung. Hellgrüne Blasen stehen für Ereignisse mit einer 50/50-Aufteilung, wie z. B. Hockey.

Hier ist mein Ausgangspunkt (unter Verwendung des Codes und Ansatzes von oben):

Erstes Ergebnis

Einige einfache Lösungen: Erhöhen Sie die Abbildungsgröße und ändern Sie die Beschriftungen in „leer“, wenn die Größe 250 nicht überschreitet, um zu vermeiden, dass Wörter außerhalb der Blasen stehen.

fig, ax = plt.subplots(figsize=(12,8),subplot_kw=dict(side="equal"))

#Labels edited instantly in dataset

Zweites Ergebnis

Nun, jetzt ist es zumindest lesbar. Aber warum ist Leichtathletik Rosa Und Boxen Blau? Fügen wir eine Legende hinzu, um die Beziehung zwischen Farben und weiblicher Darstellung zu veranschaulichen.

Da es sich nicht um ein normales Balkendiagramm handelt, plt.legend() funktioniert hier nicht.

Mithilfe der Matplotlib-Annotation Bbox können wir Rechtecke (oder Kreise) erstellen, um die Bedeutung hinter jeder Farbe anzuzeigen. Dasselbe können wir auch tun, um eine Blasenskala anzuzeigen.

import matplotlib.pyplot as plt
from matplotlib.offsetbox import (AnnotationBbox, DrawingArea,
TextArea,HPacker)
from matplotlib.patches import Circle,Rectangle

# That is an instance for one part of the legend

# Outline the place the annotation (legend) shall be
xy = (50, 128)

# Create your coloured rectangle or circle
da = DrawingArea(20, 20, 0, 0)
p = Rectangle((10 ,10),10,10,shade="#fc8d62ff")
da.add_artist(p)

# Add textual content

textual content = TextArea("20%", textprops=dict(shade="#fc8d62ff", measurement=14,fontweight='daring'))

# Mix rectangle and textual content
vbox = HPacker(youngsters=(da, textual content), align="high", pad=0, sep=3)

# Annotate each in a field (change alpha if you wish to see the field)
ab = AnnotationBbox(vbox, xy,
xybox=(1.005, xy(1)),
xycoords='knowledge',
boxcoords=("axes fraction", "knowledge"),
box_alignment=(0.2, 0.5),
bboxprops=dict(alpha=0)
)
#Add to your bubble chart
ax.add_artist(ab)

Ich habe auch einen Untertitel und eine Textbeschreibung unter dem Diagramm hinzugefügt, indem ich einfach plt.textual content()

Abschließende Visualisierung

Einfache und benutzerfreundliche Interpretationen der Grafik:

  • Die Mehrheit der Kreise ist hellgrün → grün bedeutet 50 % Frauen → die Mehrheit der olympischen Wettbewerbe weist ein gleichmäßiges Verhältnis von 50/50 zwischen Frauen und Männern auf (juhuu🙌)
  • Nur an einer Sportart (Baseball) in Dunkelgrün nehmen keine Frauen teil.
  • An drei Sportarten nehmen ausschließlich Frauen teil, die Zahl der Sportlerinnen ist jedoch relativ gering.
  • Die größten Sportarten in Bezug auf die Anzahl der Athleten (Schwimmen, Leichtathletik und Gymnastik) liegen sehr nahe an einer 50/50-Aufteilung

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert