在 matplotlib imshow 上更改 format/units 坐标

Change format/units of co-ords on matplotlib imshow

我希望光标坐标为整数而不是 5.75e+03。 我遇到了与该用户 (matplotlib coordinates format) 相同的问题,我使用了向他们建议的解决方案,该解决方案对他们有用,但对我不起作用。这就是解决方案

ax.format_coord = lambda x, y: "({0:f}, ".format(y) +  "{0:f})".format(x)

这是我的情节:

您可能希望使用格式 :.0f 而不仅仅是 :f。后者不固定小数位数。默认情况下,matplotlib 根据可用 space 自动选择格式。如果您调整 window 的大小,默认格式会发生变化。但这种选择似乎并非在所有情况下都是合乎逻辑的。

在Python3.6f-strings were introduced, which simplifies the ways formatting can be written. For an extensive list of available format specifiers, see this document.

这是一个最小的例子:

from matplotlib import pyplot as plt
import numpy as np

plt.imshow(np.random.rand(3, 5), extent=(0, 5000, 0, 3000))
plt.gca().format_coord = lambda x, y: f"({x:.0f}, {y:.0f})"
plt.show()

对于较旧的 Python 版本,您可以将 format_coord 设置为 lambda x, y: "({0:.0f}, {1:.0f})".format(x, y)