Ich habe den folgenden Code eines gestapelten Histogramms und es funktioniert einwandfrei, wenn FIELD
numerisch ist. Wenn ich jedoch FIELD_str
anstelle von 1, 2, 3, ... abc1
, abc2
, abc3
usw. setze, schlägt es mit dem Fehler TypeError: cannot concatenate 'str' and 'float' objects
fehl.Gestapeltes Histogramm schlägt für Zeichenfolgenwerte in X-Achse fehl
filter = df["CLUSTER"] == 1
plt.ylabel("Absolute frequency")
plt.hist([df["FIELD"][filter],df["FIELD"][~filter]],stacked=True,
color=['#8A2BE2', '#EE3B3B'], label=['1','0'])
plt.legend()
plt.show()
DATASET:
s_field1 = pd.Series(["5","5","5","8","8","9","10"])
s_field1_str = pd.Series(["abc1","abc1","abc1","abc2","abc2","abc3","abc4"])
s_cluster = pd.Series(["1","1","0","1","0","1","0"])
df = pd.concat([s_field1, s_field1_str, s_cluster], axis=1)
df
EDIT Wie kann ich mit ihren String-Werten (dies für die bessere Lesbarkeit des Diagramms erforderlich) (direkt oder indirekt) die Zahlen in der X-Achse ersetzen:
ich habe versucht, ein Wörterbuch zu erstellen, aber nicht herausfinden kann, wie es in dem Histogramm zu setzen:
# since python 2.7
import collections
yes = collections.Counter(df["FIELD_str"][filter])
no = collections.Counter(df["FIELD_str"][~filter])
Es ist schwer, Ihnen zu helfen, ohne [Minimal, vollständig und prüfbare Beispiel] (http://stackoverflow.com/help/mcve) – GWW
@GWW: Siehe meine Bearbeitung. – duckertito