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 № 1Sie 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")