python - 格式化德语的刻度标签,即以点作为千位分隔符,以逗号作为十进制分隔符

标签 python matplotlib label comma separator

我希望我的刻度标签按照德国风格进行格式化,以逗号作为小数点分隔符,以句点/点作为千位分隔符。以下代码适用于x轴上的小数点分隔符,但不适用于y轴。


import numpy as np
import matplotlib.pyplot as plt
import locale
# Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "deu_deu")
plt.ticklabel_format(useLocale=True)

# evenly sampled time at 200ms intervals
t = np.arange(0., 2., 0.2)


# red dashes, blue squares and green triangles
plt.plot(t, 1000000*t, 'r--', t, 1000000*t**2, 'bs', t, 1000000*t**3, 'g^')
plt.show()


Result of the above program via the reference below

使用上面的代码,y轴刻度标签如下所示:1000000、2000000、3000000 ...

但是,我想像这样查看y轴标签:1.000.000(一百万),2.000.000(两百万),等等。

最佳答案

您没有得到预期的结果,因为默认情况下matplotlib不包括数千个分隔符。通常,如果要用逗号分隔成千上万,则必须手动进行,小数点也是如此。以下是一种实现方法,可修改您的代码并使用lambda函数。

码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import locale
# Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "deu_deu")

fig, ax = plt.subplots()

ax.ticklabel_format(useLocale=True)

# evenly sampled time at 200ms intervals
t = np.arange(0., 2., 0.2)

# Apply decimal-mark thousands separator formatting to y axis.
ax.get_yaxis().set_major_formatter(mpl.ticker.FuncFormatter(lambda x, loc: locale.format_string('%d', x, 1)))

# red dashes, blue squares and green triangles
ax.plot(t, 1000000*t, 'r--', t, 1000000*t**2, 'bs', t, 1000000*t**3, 'g^')
plt.show()


输出:

enter image description here

关于python - 格式化德语的刻度标签,即以点作为千位分隔符,以逗号作为十进制分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211960/

相关文章:

python - 确定请求的速率限制

python - 随机森林的 "verbosity"参数是什么意思? (sklearn)

python - 如何在使用 Pandas 从 CSV 中读取整数时优雅地回退到 `NaN` 值?

javascript - 不兼容的 html 页面中的 TabIndex 控件

python - 对 Pandas DataFrame 中的部分字符串(关键字)匹配求和

python - 在热图中每第 7 列之后插入一行

python - matplotlib:在条形图上绘制多列 Pandas 数据框

python - 如何安排热图 pcolormesh 的数据?

d3.js - 在 D3js 中格式化 x 轴的标签

c# - 标签在一定长度后无意中消失