¿Cómo almaceno el diagtwig de pcolormesh como una matriz numpy, al mismo tiempo que conservo la forma de los datos?

Parece que tengo algunos problemas para almacenar una ttwig creada con matplotlib.pcolormesh() . Por lo que sé, es pcolormesh convertir una matriz de datos de entrada utilizando un mapa de colores. El mapa de colores genera un valor RGB para cada entrada en la matriz y lo grafica.

Lo que en mi cabeza sería similar a

 import numpy as np import matplotlib.pyplot as plt import matplotlib from PIL import Image import librosa import librosa.display from matplotlib import cm fig = plt.figure(figsize=(12,4)) min = -1.828067 max = 22.70058 data = np.random.uniform(low=min, high=max, size=(474,40)) librosa.display.specshow(data.T,sr=16000,x_axis='frames',y_axis='mel',hop_length=160,cmap=cm.jet) plt.axis('off') plt.show() raw_input("sadas") convert = plt.get_cmap(cm.jet) norm = matplotlib.colors.Normalize(vmin=0,vmax=1) numpy_output_static = convert(norm(data.T)) plt.imshow(numpy_output_static,cmap = cm.jet, aspect = 'auto') plt.show() raw_input("asds") 

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

El problema aquí es que la matriz numpy de los datos que se representan como un gráfico no es similar a lo que muestra el primer gráfico. Necesito que el número tenga datos que representen la ttwig, de modo que si quisiera trazarlo, obtendría una imagen idéntica a la primera, y la forma de la matriz de números debería ser similar a los datos de entrada que se usaron en plot 1.

    El número se alimenta a una neural network, para detectar patrones, lo que significa que la representación es importante aquí.

    Entonces, ¿cómo puedo hacer que almacene la ttwig real, sin todas las cosas rojas …

    Y si esto no es posible en matplotlib ¿en qué otra biblioteca sería posible hacerlo?

    Los datos oscilan entre -1.828067 y 22.70058 . Sin embargo, en la segunda gráfica, la vmin=0 al rango entre vmin=0 y vmax=1 . Por lo tanto, todos los datos que sean más grandes que 1 serán rojos en el gráfico de imshow .

    Si utiliza

     norm = matplotlib.colors.Normalize(vmin=-1.828067,vmax=22.70058) 

    debe obtener la matriz original.

    Tenga en cuenta que si no convierte los datos a una matriz de color, el resultado debería ser el mismo, de modo que toda la conversión podría ser innecesaria y simplemente puede hacerlo.

     plt.imshow(data.T,cmap = cm.jet, aspect = 'auto') 

    Lo que terminé haciendo es esto:

     import numpy as np import matplotlib.pyplot as plt import matplotlib from PIL import Image import librosa import librosa.display from matplotlib import cm from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1)) fig = plt.figure(figsize=(12,4)) min = -1.828067 max = 22.70058 data = np.random.uniform(low=min, high=max, size=(474,40)) librosa.display.specshow(data.T,sr=16000,x_axis='frames',y_axis='mel',hop_length=160,cmap=cm.jet) plt.axis('off') plt.show() #raw_input("sadas") convert = plt.get_cmap(cm.jet) data = min_max_scaler.fit_transform(data) print data.min() print data.max() numpy_output_static = convert(data.T) plt.imshow(numpy_output_static, aspect = 'auto') plt.show() #raw_input("asds") 

    Podría haber usado la función de normalizar un poco incorrectamente y pensé que la normalización manejaría los datos de entrada, lo que no parece ser el caso. Así que utilicé sklearn para normalizarlo antes de hacer la ttwig.

    Y luego hacer uso del cmap.

    Y el resultado es:

    introduzca la descripción de la imagen aquí