1. ホーム
  2. python-2.7

[解決済み] matplotlibで科学的記法を制御するには?

2022-03-01 23:56:37

質問

これは、プロットしようとしている私のデータフレームです。

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

プロットです。

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

どのように解決するのですか?

この行を追加すると、数字がプレーンな形式で表示されるようになりますが、','が付いているので、見た目はもっときれいになります。

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

そして int(x)/ を使えば、百万や千に変換することができます。