Python: 显示含有负正值的矩阵

7 投票
2 回答
13634 浏览
提问于 2025-04-18 12:23

我有一个矩阵 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(...) 这样的写法就可以了。关键在于那些关键词参数。)

在这些关键词参数中,vminvmax 用来设置颜色的范围,cmap 定义了颜色的样式,而 aspect='auto' 则让图像在两个方向上都可以缩放。interpolation 参数可以自己试试(可以不加这个参数,看看会发生什么)。

在这个例子中,最低的颜色(值小于等于 -0.2)是黑色,最高的颜色(值大于等于 0.2)是白色:

enter image description here

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

matrix

撰写回答