matplotlib 设置负货币的格式[重复]

yjghlzjz  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(107)

此问题已在此处有答案

Dollar Sign with Thousands Comma Tick Labels(2个答案)
4天前关闭。
我想绘制负货币金额作为标签。下面是我找到的一些代码:

fmt = '${x:,.0f}'
tick = mtick.StrMethodFormatter(fmt)
axes.yaxis.set_major_formatter(tick)

这将在Y轴上显示负45美元为-45美元。显示的正确格式是什么-45美元?

:此问题已关闭,因为之前已问过相同的问题。然而,如果你检查前面那个问题的答案,它不适用于负货币,导致我下面的问题中讨论的确切问题,它有一个公认的答案。事实上,旧问题的解决方案是使用fmt = '${x:,.0f}'

cbeh67ev

cbeh67ev1#

您可以定义一个自定义刻度函数,该函数根据刻度标签是正数还是负数来设置刻度标签的格式,请查看以下示例:

import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import numpy as np

x = np.arange(5)
y = np.array([-100, -50, 0, 50, 100])

# custom tick function
def currency_ticks(x, pos):
    if x >= 0:
        return '${:,.0f}'.format(x)
    else:
        return '-${:,.0f}'.format(abs(x))

fig, ax = plt.subplots()

ax.plot(x, y)

# format the y-axis tick labels using custom func
tick = mtick.FuncFormatter(currency_ticks)
ax.yaxis.set_major_formatter(tick)

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Title')

plt.show()

相关问题