GOOGLE ADS

Mittwoch, 27. April 2022

Wie mache ich einen Teil eines Balkendiagramms transparent, um den gefüllten Bereich darunter mit Matplotlib in Python einzublenden?

Ich habe einen Pandas-Datenrahmen df, der wie folgt aussieht:

CSP Min Max
A 107.0 111.0
B 126.0 156.0

df.to_dict()ist wie folgt:

{'Min': {'A': 107.0, 'B': 126.0}, 'Max': {'A': 111.0, 'B': 156.0}}

Ich möchte ein Balkendiagramm für A und B zeichnen, indem ich den Teil zwischen 0 und Min ausblende und nur den Teil zwischen Min und Max zeige. Daher habe ich mich entschieden, die Min als weiße Farbe zu färben. Der Code sieht wie folgt aus:

fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
plt.legend([])

Und das resultierende Diagramm sieht wie folgt aus:
Geben Sie hier die Bildbeschreibung ein

Ich möchte auch einen farbigen Bereich zwischen 55 und 148 zeichnen. Also habe ich plt.fill_between()für diesen Zweck verwendet.

fig, ax = plt.subplots(figsize = (12, 8))
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])

Es sieht wie folgt aus:
Geben Sie hier die Bildbeschreibung ein

Jetzt möchte ich diese beiden zu einem einzigen Plot kombinieren. Ich habe folgenden Code verwendet:

fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])

Das resultierende Diagramm sieht wie folgt aus:
Geben Sie hier die Bildbeschreibung ein

Das Problem ist, dass der weiße Balken den grauen Bereich überlappt, was er nicht sollte. Wie kann ich also den unteren Teil der Leiste transparent machen, sodass der graue Bereich darunter immer noch sichtbar ist?


Lösung des Problems

Sie können einfach (kein Stapel) df['Max']mit bottomder Option plotten, indem Sie Folgendes verwenden df['Min']:

df['Max'].plot(kind = "bar",
color="orange",
ax = ax,
bottom=df['Min'])

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...