我希望我的刻度标签按照德国风格进行格式化,以逗号作为小数点分隔符,以句点/点作为千位分隔符。以下代码适用于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()
使用上面的代码,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()
输出:
关于python - 格式化德语的刻度标签,即以点作为千位分隔符,以逗号作为十进制分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211960/