/ / Matplotlib - Clustered Bar Chart von Dict mit mehreren Werten pro Schlüssel - Python, Matplotlib

Matplotlib - Clustered Balkendiagramm von Dict mit mehreren Werten pro Schlüssel - Python, Matplotlib

Die gegebenen dict.items () sehen ungefähr so ​​aus:

("a", [11, 10])
("b", [10, 11])
("c", [7, 6])
("d", [5, 5])
("e", [21])

Erstens, wie könnte ich einen zweiten Wert an "e" anhängen, damit die Länge mit den anderen übereinstimmt?

Zweitens, ignoriert man das Längenproblem mit e, wie könnte ich ein gruppiertes Balkendiagramm der Werte mit dem Schlüssel für die Beschriftung erstellen.

Scheint, als würde ich die Werte in Listen und Diagramme aufteilen wollen

ax.bar(len(d.keys()), list1, width="0.5", color="r")
ax.bar(len(d.keys()), list2, width="0.5", color="r")

Ich musste noch nie ein Diktat mit mehreren Werten pro Schlüssel zeichnen und kann es anscheinend nicht herausfinden.

Antworten:

0 für die Antwort № 1

Sie können anhängen new_value zu d["e"] mit

d["e"].append(new_value)

Logisch, wenn Sie darüber nachdenken. Die einzelnen Wertelisten erhalten Sie mit

list1 = [x[0] for x in d.values()]
list2 = [x[1] for x in d.values()]

0 für die Antwort № 2

Hier ist ein Ansatz unter Verwendung von Pandas:

import pandas as pd
data = dict([("a", [11, 10]), ("b", [10, 11]),
("c", [7, 6]), ("d", [5, 5]),
("e", [21])])

Die Antwort von holdenweb eignet sich zum Anhängen eines Diktateintrags:

# add to e
new_value = 22
data["e"].append(new_value)

Konvertieren Sie nun in einen Pandas-Datenrahmen und plot():

# convert to data frame
# .T transposes letter categories to the x-axis
df = pd.DataFrame(data).T

# plot grouped bar chart
df.plot(kind="bar")

Bar Grundstück