Python 为什么存储的图像与显示的图像不同?

Python 为什么存储的图像与显示的图像不同?,python,numpy,matplotlib,librosa,Python,Numpy,Matplotlib,Librosa,我目前无法理解为什么在存储数据后无法重新创建绘图 import os import sys from os import listdir from os.path import isfile, join import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import seaborn as sb from matplotlib.colors import Normal

我目前无法理解为什么在存储数据后无法重新创建绘图

import os
import sys
from os import listdir
from os.path import isfile, join
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sb
from matplotlib.colors import Normalize
import matplotlib
from matplotlib import cm
from PIL import Image
import librosa
import librosa.display
import ast

def make_plot_store_data(name,interweaved):
    librosa.display.specshow(interweaved.T,sr=16000,x_axis='frames',y_axis='mel',hop_length=160,cmap=cm.jet)
    plt.title("log mel power spectrum of interweaved " + name)
    plt.colorbar(format='%+02.0f dB')
    plt.savefig(plot+"/"+name+"_plot_interweaved_conv.png")
    plt.show()
    plt.close()


    convert = plt.get_cmap(cm.jet)
    numpy_output_interweawed = convert(interweaved.T)
    print interweaved.shape
    print numpy_output_interweawed.shape
    plt.imshow(numpy_output_interweawed, interpolation='nearest')
    plt.show()
    raw_input("Somethign")
    numpy_output_interweawed.dump(numpy_train+name+"_normalized_interweaved"+".dat")
    numpy_output_interweawed_or = convert(interweaved.T)*255
    numpy_output_interweawed_or.dump(numpy_train+name+"_interweaved"+".dat")
librosa
显示的绘图将数据视为

但是当我使用
plt.cmap(cm.jet)
而使用
matplotlib.pyplot
进行的绘图将数据弄乱,并且在任何方面都与原始的不一样

编辑

这是我的

plt.imshow(interweaved.T,aspect = 'auto')
plt.show()
raw_input("Somethign")

这看起来像是图像的纵横比——当我把图放大时,它开始与原始图相似——但为什么颜色这么暗


没有任何问题,在没有数据或不知道阵列形状的情况下,就我所知,一切似乎都按预期工作

但是,如果你想让你的情节看起来与LiBrSA制作的相似,你认为5月1日使用不相等的方面

plt.imshow(...,  aspect="auto")
并可能使用imshow的
extent
参数正确设置绘图的数据范围


还要注意,librosa生成的绘图是一个
pcolormesh
,因此要真正复制它,您可能需要保持数据的格式(而不是通过颜色映射),并使用
pcolormesh
进行绘图

和这个问题一样:交织的数组形状是(x,40)。当它被cmap转换为(40,x,4)-这也是我所期望的。但是情节看起来很不一样。当
cmap
应该创建带有RGB值的数据数组时,为什么我需要
pcolormesh
。数据必须包含图像的RGB值,因为我稍后会存储它们以供进一步处理。你知道为什么会出现网格吗?