首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python matplotlib -绘图中的颜色代码+ve和-ve值

Python matplotlib -绘图中的颜色代码+ve和-ve值
EN

Stack Overflow用户
提问于 2018-08-02 02:24:29
回答 2查看 1.2K关注 0票数 0

我有一堆形状为(1,104)的样本。所有示例都是在matplotlibimshow函数中使用的整数( +ve、-ve和0)。下面是我创建的将它们显示为图像的函数。

代码语言:javascript
复制
def show_as_image(sample):
    bitmap = sample.reshape((13, 8))
    plt.figure()
    # this line needs changes.
    plt.imshow(bitmap, cmap='gray', interpolation='nearest')
    plt.colorbar()
    plt.show()

我需要颜色代码的正和负值从samplePS:取0为正。如何更改代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 06:17:27

您可以设置颜色编码的规范化,使其在数据的负绝对值和正绝对值之间均匀分布。使用中间带有浅色的色彩映射表可以帮助可视化这些值离零有多远。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

def show_as_image(sample):
    bitmap = sample.reshape((13, 8))
    maxval = np.max(np.abs([bitmap.min(),bitmap.max()]))
    plt.figure()
    plt.imshow(bitmap, cmap='RdYlGn', interpolation='nearest',
               vmin=-maxval, vmax=maxval)
    plt.colorbar()
    plt.show()

sample=np.random.randn(1,104)
show_as_image(sample)

如果需要二进制映射,则可以将正值映射为1,将负值映射为0。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

def show_as_image(sample):
    bitmap = sample.reshape((13, 8))
    bitmap[bitmap >= 0] = 1
    bitmap[bitmap < 0] = 0
    plt.figure()
    plt.imshow(bitmap, cmap='RdYlGn', interpolation='nearest',
               vmin=-.1, vmax=1.1)
    plt.show()

sample=np.random.randn(1,104)
show_as_image(sample)

在这种情况下,色条的使用可能是无用的。

票数 1
EN

Stack Overflow用户

发布于 2018-08-02 03:45:36

您可以创建为每个像素分配颜色代码的三维数组。所以如果你想要黑白的,你需要分别传递(0,0,0)(1,1,1)。像这样的东西应该是有效的:

代码语言:javascript
复制
def show_as_image(sample):
    bitmap = sample.reshape((13, 8))
    bitmap_colored = np.zeros((13,8,3))
    bitmap_colored[bitmap>=0] = [1,1,1] # black for values greater or equal to 0
    bitmap_colored[bitmap<0] = [0,0,0] # white for values less than 0
    plt.figure()
    plt.imshow(bitmap_colored, interpolation='nearest')
    plt.show()

例如:

代码语言:javascript
复制
>>> sample = np.random.randint(low=-10,high=10,size=(1,104))
>>> show_as_image(sample)

将输出如下所示的内容:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51639970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档