Matplotlib的imshow()函数如何手动定义坐标轴标签?

10

以下代码:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randint(0, 100, size=(10, 10))
plt.imshow(data, cmap='jet', interpolation='nearest')
plt.show()

给出以下图像:

enter image description here

然而,我想手动定义轴标签,而不是按照数组索引来对应。例如,与其使用如上所示的轴标签 (0、2、4、6、8),我希望它们是 (0、10、20、30...)。

这是我为此尝试的代码:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randint(0, 100, size=(10, 10))
labels = range(0, 100, 10)
plt.imshow(data, cmap='jet', interpolation='nearest')
plt.xticks(labels)
plt.yticks(labels)
plt.show()

然而,这会产生以下图像:

在此输入图片描述

如何制作外观类似于第一个图像,但轴标签类似于第二个图像的图表?

2个回答

9
最好的方法是修改您的imshow函数中的extent值:
import matplotlib.pyplot as plt
import numpy as np

data = np.random.randint(0, 100, size=(10, 10))
plt.imshow(data, cmap='jet', interpolation='nearest', extent=[0, 100, 0, 100])
plt.show()

这是做法。 - Matt Hall

7

定义你的轴并修改xticklabels,而不是轴本身。可以像这样:

fig, ax1 = plt.subplots(1,1)
data = np.random.randint(0, 100, size=(10, 10))
ax1.imshow(data, cmap='jet', interpolation='nearest')
ax1.set_xticklabels(['', 0,10,20,30,40])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接