如何将货币格式添加到 matplotlib.pyplot.text? [复制]

Posted

技术标签:

【中文标题】如何将货币格式添加到 matplotlib.pyplot.text? [复制]【英文标题】:How to add currency format to matplotlib.pyplot.text? [duplicate] 【发布时间】:2019-07-07 22:31:31 【问题描述】:

我想更改使用 matplotlib.pyplot.text 创建的文本的格式 - 我将在条形图中的每个条形上方添加文本。但我不知道怎么做。我尝试了question 中建议的方法,能够更改 y 轴上的格式,但文本框没有成功。

Example image

这是链接问题中使用的方法(我也用于我的 y 轴):

fig, ax = plt.subplots(1, 1, figsize=(8, 5))
fmt = '$x:,.0f'
tick = mtick.StrMethodFormatter(fmt)
ax.yaxis.set_major_formatter(tick)

这是我用来创建文本的代码:

for i in range(len(cost_tbl)):
    ax.text(i-0.2, cost_tbl[i, 2]+18000, str(int(cost_tbl[i, 2])), rotation=60)

【问题讨论】:

'$x:,.0f'.format(x=int(cost_tbl[i, 2])) 【参考方案1】:

您有两种选择。由于您没有提供示例数据,因此我将在下面进行解释。

首先:只需将字符串$ 添加到您的文本中

ax.text(i, height[i]+100000, '$'+str(int(height[i])), rotation=60)

第二使用你的fmt = '$x:,.0f' 没有 x

ax.text(i, height[i]+100000, '$:,.0f'.format(height[i]), rotation=60)
import matplotlib.ticker as mtick
import numpy as np; np.random.seed(10)

fig, ax = plt.subplots(1, 1, figsize=(8, 5))
height = np.random.randint(100000, 500000, 10)
plt.bar(range(10), height)

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

for i in range(10):
#     ax.text(i, height[i]+5, '$'+str(int(height[i])), rotation=60)
    ax.text(i, height[i]+100000, '$:,.0f'.format(height[i]), rotation=60)

plt.ylim(0, max(height)*1.5) 

【讨论】:

以上是关于如何将货币格式添加到 matplotlib.pyplot.text? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

DataGridView - 如何仅为单列设置货币格式

如何应用动态数字格式?

如何将双精度格式设置为四舍五入到最接近的美元的货币?

如何将输出格式化为 UILabel 作为货币?

PHP中从欧元货币格式到美元货币格式

如何在总和数据表中包含货币格式