格式化matplotlib图刻度

时间:2018-07-09 21:31:38

标签: python python-3.x matplotlib

我正在将matplotlib与tkinter一起使用以显示图形。我正在尝试更改我的y轴刻度的格式以适应图表的需要。这是我尝试过的。

a.set_title('Ending AUM')
a.set_xlabel('Dates')
a.set_ylabel('Ending AUM ($)')
a.grid(True)
a.get_yaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))

但是,这会将刻度线格式化为整数,并带有千位标记的逗号。如图所示。

我将如何设置其格式,以便y轴刻度线以$开头,以小数点结尾。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用StrMethodFormatter类,为其提供格式字符串,该字符串使用与Python的str.format()函数相同的mini-language

在这种情况下,以美元符号开头和以十进制结尾的格式字符串将为"${x:.2f}"x标记字段,StrMethodFormatter类允许格式字符串中的两个字段:x表示值,pos表示位置。

代码的最后一行将变为:

a.get_yaxis().set_major_formatter(matplotlib.ticker.StrMethodFormatter("${x:.2f}"))

如果您想要更多或更少的小数位,只需更改数字2。如果要保留数千个分隔符,请在冒号后加一个逗号:"${x:,.2f}"