例如,我有一个numpy数组,我使用matplotlib将其显示如下:

import numpy as np
import matplotlib.pyplot as plt

img = np.array([[12,230],[1322,2122]])
tmp = plt.imshow(img,cmap=plt.cm.jet)
plt.colorbar()
plt.show()

结果是:
python - 我可以在matplotlib中显示没有科学符号的图片像素值吗-LMLPHP
但我想在右下角显示不带科学符号的完整数字。从prevent scientific notation in matplotlib.pyplotIs ticklabel_format broken?的某些方法不起作用。
我该怎么做?提前谢谢。

最佳答案

要更改绘图导航栏上的光标数据,请将AxesImage的format_cursor_data替换为我们要使用的。在这种情况下,我们使用str函数将数字转换为字符串而不使用科学符号。
首先,我们定义自定义函数:

def format_cursor_data(data):
    return "[" + str(data) + "]"

然后用我们自己的函数替换AxesImage的format_cursor_data函数:
tmp.format_cursor_data = format_cursor_data

因此,完整的脚本将如下所示:
import numpy as np
import matplotlib.pyplot as plt

img = np.array([[12,230],[1322,2122]])
tmp = plt.imshow(img,cmap=plt.cm.jet)

def format_cursor_data(data):
    return "[" + str(data) + "]"

tmp.format_cursor_data = format_cursor_data

plt.colorbar()
plt.show()

结果图:
python - 我可以在matplotlib中显示没有科学符号的图片像素值吗-LMLPHP

07-28 02:35