Python: 显示含有负正值的矩阵
我有一个矩阵 m
,里面有正值和负值。我想在Python中把这个矩阵可视化。在MATLAB中,我可以通过使用 imshow(m, []);
来显示这个矩阵,这样最负的值会被映射到0,而最正的值会被映射到255。那么在Python中,我该怎么做才能达到同样的效果呢?
2 个回答
2
imshow
函数可以设置颜色的最小值和最大值:
import numpy as np
import matplotlib.pyplot as plt
# create some data with both negative and positive values
data = np.random.randn(10,10)
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.imshow(data, vmin=-.2, vmax=.2, interpolation='nearest', cmap=plt.cm.gray, aspect='auto')
fig.colorbar(im)
(这里我用的是面向对象的写法。如果你用的是状态接口,那就直接用 imshow(...)
这样的写法就可以了。关键在于那些关键词参数。)
在这些关键词参数中,vmin
和 vmax
用来设置颜色的范围,cmap
定义了颜色的样式,而 aspect='auto'
则让图像在两个方向上都可以缩放。interpolation
参数可以自己试试(可以不加这个参数,看看会发生什么)。
在这个例子中,最低的颜色(值小于等于 -0.2)是黑色,最高的颜色(值大于等于 0.2)是白色:
5
看起来默认情况下是通过matplotlib的imshow
来进行缩放的:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([[1.0,2.0], [-3.0,-2.0]], dtype='float')
plt.imshow(x, interpolation='none')
plt.colorbar()
plt.show()