在Matplotlib中创建颜色图例

62 投票
3 回答
136671 浏览
提问于 2025-04-15 20:28

我在使用 matplotlib 的 imshow() 函数,像这样:

import numpy as np
import matplotlib.pyplot as plt
mat = '''SOME MATRIX'''
plt.imshow(mat, origin="lower", cmap='gray', interpolation='nearest')
plt.show()

我该如何添加一个图例,显示不同灰度的数值呢?可惜我在网上搜索没有找到答案 :(

提前谢谢你的帮助。

文斯

3 个回答

9

像往常一样,我在问完问题后就想明白了;)。为了以后参考,这里是我的尝试:

m = np.zeros((1,20))
for i in range(20):
    m[0,i] = (i*5)/100.0
print m
plt.imshow(m, cmap='gray', aspect=2)
plt.yticks(np.arange(0))
plt.xticks(np.arange(0,25,5), [0,25,50,75,100])
plt.show()

我相信一定有更优雅的解决办法。

文斯

44

在pyplot里,有一个内置的 colorbar() 函数。下面是一个使用子图的例子:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plot = ax.pcolor(data)
fig.colorbar(plot)
60

很简单,只需要用 plt.colorbar() 这个命令就可以了:

import numpy as np
import matplotlib.pyplot as plt
mat = np.random.random((10,10))
plt.imshow(mat, origin="lower", cmap='gray', interpolation='nearest')
plt.colorbar()
plt.show()

撰写回答