Почему изображение хранится не так, как показано на картинке?

В настоящее время я не могу понять, почему я не могу воссоздать сюжет после сохранения данных..

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

введите описание изображения здесь

Кажется, что соотношение сторон изображения имеет значение - оно начинает напоминать исходный график, когда я увеличиваю его - но почему цвета такие темные...

введите описание изображения здесь

1 ответ

В этом нет ничего плохого, все, как я могу судить, работает, как я и ожидал, без данных или без знания форм массива.

Однако, если вы хотите иметь свой imshow Сюжет выглядит похожим на тот, что создан librosa, вы можете сначала рассмотреть вопрос об использовании неравного аспекта.

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

и, возможно, правильно установить диапазон данных графика, используя extent аргумент imshow.

Также имейте в виду, что сюжет, созданный librosa, является pcolormesh так что для правильной репликации вы можете сохранить данные в том формате, в котором они есть (не помещая их в цветовую карту), и использовать pcolormesh построить это.

Другие вопросы по тегам