0

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

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

在此处输入图像描述

似乎图像的纵横比很重要-当我将情节放大时,它开始类似于原始情节-但是为什么颜色如此暗...

在此处输入图像描述

4

1 回答 1

0

没有错,据我所知,在没有数据或不知道数组形状的情况下,一切似乎都按预期工作。

但是,如果您想让您的imshow情节看起来与 librosa 制作的情节相似,您可以首先考虑使用不相等的方面

plt.imshow(...,  aspect="auto")

extent并可能使用imshow的参数正确设置绘图的数据范围。

另请注意,librosa 生成的图是 a pcolormesh,因此要真正复制它,您可能希望将数据保持在它原来的格式(而不是通过颜色图)并用于pcolormesh绘制它。

于 2017-04-27T07:45:42.807 回答