首页 > 解决方案 > 在 matplotlib imshow 上更改坐标的格式/单位

问题描述

我希望光标的坐标是整数而不是 5.75e+03。我和这个用户有同样的问题(matplotlib 坐标格式),我使用了向他们建议的对他们有用的解决方案,但它对我不起作用。这是解决方案

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

这是我的情节:
在此处输入图像描述

标签: pythonmatplotlibcursorcoordinatesinteractive

解决方案


您可能想使用该格式:.0f,而不仅仅是:f. 后者不固定小数位数。默认情况下,matplotlib 会根据可用空间自动选择格式。如果调整窗口大小,默认格式可能会改变。但这种选择在每种情况下似乎都不是合乎逻辑的。

在 Python 3.6f-strings中引入,它简化了格式化的编写方式。有关可用格式说明符的详细列表,请参阅此文档

这是一个最小的例子:

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_coordlambda x, y: "({0:.0f}, {1:.0f})".format(x, y)


推荐阅读