Verschachtelte Tortendiagramme #

Die folgenden Beispiele zeigen zwei Möglichkeiten, ein verschachteltes Kreisdiagramm in Matplotlib zu erstellen. Solche Diagramme werden oft als Donut-Diagramme bezeichnet.

import matplotlib.pyplot as plt
import numpy as np

Der einfachste Weg, ein Tortendiagramm zu erstellen, ist die Verwendung der pieMethode.

In diesem Fall nimmt pie Werte an, die Zählungen in einer Gruppe entsprechen. Wir werden zunächst einige gefälschte Daten generieren, die drei Gruppen entsprechen. Im inneren Kreis behandeln wir jede Zahl als zu ihrer eigenen Gruppe gehörend. Im äußeren Kreis werden wir sie als Mitglieder ihrer ursprünglichen 3 Gruppen darstellen.

Der Effekt der Donut-Form wird erreicht, indem a widthauf die Keile des Kuchens durch das Argument " Wedgeprops" gesetzt wird .

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()
Tortendiagramm mit `ax.pie`

Sie können jedoch dieselbe Ausgabe erzielen, indem Sie ein Balkendiagramm auf Achsen mit einem Polarkoordinatensystem verwenden. Dies kann mehr Flexibilität bei der genauen Gestaltung des Diagramms geben.

In diesem Fall müssen wir die x-Werte des Balkendiagramms auf das Bogenmaß eines Kreises abbilden. Die kumulative Summe der Werte wird als Kanten der Balken verwendet.

fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
# Normalize vals to 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
# Obtain the ordinates of the bar edges
valsleft = np.cumsum(np.append(0, valsnorm.flatten()[:-1])).reshape(vals.shape)

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.bar(x=valsleft[:, 0],
       width=valsnorm.sum(axis=1), bottom=1-size, height=size,
       color=outer_colors, edgecolor='w', linewidth=1, align="edge")

ax.bar(x=valsleft.flatten(),
       width=valsnorm.flatten(), bottom=1-2*size, height=size,
       color=inner_colors, edgecolor='w', linewidth=1, align="edge")

ax.set(title="Pie plot with `ax.bar` and polar coordinates")
ax.set_axis_off()
plt.show()
Tortendiagramm mit `ax.bar` und Polarkoordinaten

Verweise

In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:

Galerie generiert von Sphinx-Gallery