Почему изображение хранится не так, как показано на картинке?
В настоящее время я не могу понять, почему я не могу воссоздать сюжет после сохранения данных..
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
построить это.