2017-10-13 4 views
-1

Das ist mein Datenrahmen Ich versuche zu zeichnen:Wie steuert man wissenschaftliche Notation in Matplotlib?

my_dic = {'stats': {'apr': 23083904, 
         'may': 16786816, 
         'june': 26197936, 
        }} 
my_df = pd.DataFrame(my_dic) 
my_df.head() 

Dies ist, wie ich es zeichnen:

ax = my_df['stats'].plot(kind='bar', legend=False) 
ax.set_xlabel("Month", fontsize=12) 
ax.set_ylabel("Stats", fontsize=12) 
ax.ticklabel_format(useOffset=False) #AttributeError: This method only works with the ScalarFormatter. 
plt.show() 

Das Grundstück: würde

enter image description here

I Ich mag es, die wissenschaftliche Notation zu kontrollieren. Ich versuchte, es durch diese Linie zu unterdrücken, wie in anderen Fragen plt.ticklabel_format(useOffset=False) vorgeschlagen wurde, aber ich bekomme diesen Fehler zurück - AttributeError: This method only works with the ScalarFormatter. Idealerweise möchte ich meine Daten in (mln) anzeigen.

+0

Was ist die Frage? – ImportanceOfBeingErnest

+0

Ich habe es gestern selbst gelöst (siehe Update ...) – aviss

+0

Nun, so funktioniert ein Frage-Antwort-Konzept nicht. Es gibt eine Frage und eine oder mehrere Antworten. Wenn Sie das Problem gelöst haben, geben Sie die Lösung als Antwort und nicht als Bearbeitung für die Frage an. – ImportanceOfBeingErnest

Antwort

0

Hinzufügen dieser Zeile mit hilft Zahlen in einem einfachen Format zu erhalten, aber mit '' was viel schöner aussieht:

ax.get_yaxis().set_major_formatter(
    matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ','))) 

enter image description here

Und th en kann ich int(x)/ verwenden, um Millionen oder Tausend, wie ich will zu konvertieren:

enter image description here

1

Da Sie bereits pandas

import matplotlib.pyplot as plt 
my_df.plot(kind='bar') 
plt.ticklabel_format(style='plain', axis='y') 

enter image description here

Verwandte Themen