为Matplotlib imshow()手动定义的轴标签

时间:2015-10-22 14:33:48

标签: python matplotlib

以下代码:

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()

但是,这给出了下图:

enter image description here

如何实现具有类似第一个外观的图形,但使用第二个轴标签?

2 个答案:

答案 0 :(得分:6)

执行此操作的最佳方法是修改imshow参数中的范围值:

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()

答案 1 :(得分:5)

定义轴并修改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])