如何控制matplotlib中的科学记数法?

时间:2017-10-13 18:10:32

标签: python-2.7 pandas 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)中显示我的数据。

2 个答案:

答案 0 :(得分:2)

由于您已使用pandas

grep

enter image description here

答案 1 :(得分:1)

添加此行有助于以简单格式获取数字,但使用','看起来更好:

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

enter image description here

然后我可以使用int(x)/按照我的意愿转换为百万或千:

enter image description here