这个方法的作用是:
for ax in fig.axes:
ax.xaxis.set_major_formatter(StrMethodFormatter("{x:,.3f}"))
这将返回KeyError:'X':
for ax in fig.axes:
ax.xaxis.set_major_formatter(StrMethodFormatter("{x:,.{}f}".format(3)))
我想设置我的标签中的小数位数,但不想硬编码多少。
我的方法受到了这个answer的启发。
尝试更新:
这也适用于:
`ax.xaxis.set_major_formatter(StrMethodFormatter('{}'.format('{x:,.0f}'))) # No decimal places`
但这并不令人困惑:
ax.xaxis.set_major_formatter(StrMethodFormatter('{}'.format('{x:,.{}f}'.format('0') ) ) )
这也是令人困惑的:
x = '{x:,.{}f}'.format(str(0))
ax.xaxis.set_major_formatter(StrMethodFormatter('{}'.format(x) ))
尝试了这个“只是因为”,它没有工作:
ax.xaxis.set_major_formatter(StrMethodFormatter('{}'.format('{x:,{}}'.format('.0f') ) ) )
谢谢你帮助我。
1条答案
按热度按时间8fsztsew1#
这里的问题是
.format
寻找花括号进行替换。因为你在所有东西周围都有花括号,所以它会变得混乱。如果你想在格式字符串中有花括号,那么你需要将它们加倍。通过这种更改,x
可以留在字符串中,并将被.format
忽略。为了达到你想要的效果,你应该:如果你使用的是Python 3.6+,那么我更喜欢使用f-strings。同样,您需要将不属于替换部分的花括号加倍。
你也可以将格式保存到一个变量中,因为你将在每个循环中使用它。