2017-10-13 71 views
-1

これは私がプロットにしようとしている私のデータフレームである:matplotlibの科学記法を制御するには?

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

これは私がそれをプロットする方法である:

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() 

プロット:

enter image description here

私は思います科学記法を制御するのが好きです。私は他の質問plt.ticklabel_format(useOffset=False)で提案されているように、この行でそれを抑制しようとしましたが、私はこのエラーを取り返します - AttributeError: This method only works with the ScalarFormatter。理想的には、データを(mln)で表示したいと思います。

+0

質問は何ですか? – ImportanceOfBeingErnest

+0

私は昨日自分で解決しました(更新を参照してください) – aviss

+0

これは、質問と回答のコンセプトがどのように機能するかではありません。質問と1つ以上の回答があります。問題を解決した場合は、問題の編集ではなく、解答として回答を提供してください。 – ImportanceOfBeingErnest

答えて

0

を使用しているためには、非常に良く見えた '' プレーンな形式ではなくて番号を取得するのに役立ちます:

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

enter image description here

th私が望むように私は百万数千に変換するint(x)/を使用することができますEN:

enter image description here

1

すでにこの行を追加するpandas

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

enter image description here

関連する問題