【问题标题】:Python: display a matrix with negative and positive values [duplicate]Python:显示具有负值和正值的矩阵
【发布时间】:2014-08-28 07:55:21
【问题描述】:

我有一个矩阵m,有正值和负值。我想用 Python 可视化这个矩阵。在 MATLAB 中,我可以显示此矩阵,以便通过使用 imshow(m, []); 将最负值映射到 0,而将最正值映射到 255。我怎样才能在python下等效地做到这一点?

【问题讨论】:

标签: python image matlab


【解决方案1】:

看起来它默认使用 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()

【讨论】:

  • +1 - 不错。我完全忘记了matplotlibimshow。甜!
  • 如何灰度显示? :)
  • 将颜色图设置为:plt.imshow(.., cmap='gray')。这是一个快速入门的教程:matplotlib.org/users/image_tutorial.html
【解决方案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 参数很适合测试自己(只需将其忽略,看看会发生什么)。

在这种情况下,最低颜色(值 = .2)是白色:

【讨论】:

    猜你喜欢
    • 2022-06-28
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2017-04-14
    • 2019-02-05
    • 2013-11-24
    相关资源
    最近更新 更多