So erstellen Sie wunderschöne Balkendiagramme mit Seaborn und Matplotlib (einschließlich Animation) | von Oscar Leo | Juni 2023

0
26


Schritt 4: Symbole hinzufügen

Das Hinzufügen von Bildern und Symbolen zu Diagrammen macht Spaß, ist aber schwierig. Es ist nicht immer einfach, sie am perfekten Ort oder in der idealen Größe zu platzieren.

Die folgende Funktion fügt mithilfe von Symbole am Ende jedes Balkens in meinem Diagramm hinzu xycoords="knowledge" und die Werte aus meinem DataFrame.

Der boxstyle Parameter im Inneren bboxprops Erstellt einen weißen kreisförmigen Hintergrund.

def add_bar_icons(ax, row, background_color, zoom, pad):
for index, (identify, worth) in enumerate(row.gadgets()):
icon = plt.imread("./icons/{}.png".format(identify.decrease()))
picture = OffsetImage(icon, zoom=zoom, interpolation="lanczos", resample=True, seen=True)
picture.picture.axes = ax

ax.add_artist(AnnotationBbox(
picture, (worth, index), frameon=True,
xycoords="knowledge",
bboxprops={
"facecolor": "#fff",
"linewidth": 3,
"edgecolor": background_color,
"boxstyle": "circle, pad={}".format(pad),
}
))

Ich möchte das Image auf einem weißen Kreis platzieren und einen Rahmen in demselben dunklen Lila wie der Diagrammhintergrund hinzufügen.

Bisher habe ich keinen guten Weg gefunden, damit umzugehen zoom Parameter dynamisch, additionally passe ich ihn manuell an, um die richtigen Größen zu erhalten.

Jetzt sieht mein Code zum Erstellen des Diagramms so aus.

row = df.iloc[-1]

fig = plt.determine(figsize=(12, 7))
ax = create_bar_chart(row, colour=bar_color)

# New features
format_axes(ax)
add_bar_icons(ax, row, background_color, zoom=0.09, pad=0.9)

plt.title("Complete Variety of Stars on GitHub", fontsize=34, y=1.2, x=0.46)
plt.tight_layout()
plt.present()

Und das ist es, was ich bekomme.

Vom Autor erstelltes Balkendiagramm

Um den Stern hinzuzufügen, habe ich eine weitere Funktion erstellt, die mithilfe von an einer beliebigen Stelle im Diagramm ein benutzerdefiniertes Image hinzufügt xycoords="axes fraction".

def add_icon(ax, icon_name, x, y, zoom):
icon = plt.imread("./icons/{}.png".format(icon_name))
picture = OffsetImage(icon, zoom=zoom, interpolation="lanczos", resample=True, seen=True)
picture.picture.axes = ax

ax.add_artist(AnnotationBbox(
picture, (x, y), frameon=False,
xycoords="axes fraction",
))

Bei diesem nächsten Trick schaffe ich Platz für das Sternsymbol, indem ich dem Titel zusätzliche Leerzeichen hinzufüge und das anpasse x Und y Parameter, um das Image an der richtigen Stelle zu platzieren.

row = df.iloc[-1]

fig = plt.determine(figsize=(12, 7))
ax = create_bar_chart(row, colour=bar_color)

# New features
format_axes(ax)
add_bar_icons(ax, row, background_color, zoom=0.09, pad=0.9)
add_icon(ax, "star", x=0.46, y=1.26, zoom=0.13)

plt.title("Complete Variety of Stars on GitHub", fontsize=34, y=1.2, x=0.46)
plt.tight_layout()
plt.present()

Jetzt sieht unser Balkendiagramm so aus und wir sind quick fertig.

Vom Autor erstelltes Balkendiagramm

Es sieht hervorragend aus, aber jetzt möchte ich das Diagramm in ein vielseitigeres Format umwandeln.

Und lassen Sie uns etwas gegen den gequetschten Look unternehmen, indem wir etwas Polsterung hinzufügen.



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here