es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar una barra de color para los vspans creados con una alfa variable.

Me gustaría utilizar diferentes tonos de color rojo para representar la diferente importancia de cada elemento temporal y llenar esa región.

El código de ejemplo se muestra a continuación.

import matplotlib.pyplot as plt
X_example = np.random.rand(400)
importance_values = np.random.rand(400)
plt.figure(figsize=(13,7))
plt.plot(X_example)
for j in range(len(X_example)):
    plt.axvspan(xmin=j, xmax=j+1,facecolor="r",alpha=importance_values[j])

Este genera un gráfico como este:

Gráfico generado

Ahora me gustaría agregar un mapa de colores en esta figura para mostrar que, por ejemplo, el color rojo claro significa baja importancia y el rojo oscuro significa alta importancia, como se muestra a continuación:

Colormap deseado

¿Cómo puedo lograr eso en mi caso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el efecto de mapa de colores deseado como se muestra en la segunda figura, puedes utilizar la función ListedColormap del módulo matplotlib.colors. Una forma de hacer esto sería crear una lista de colores rojos, con diferentes grados de saturación y brillo, y luego crear un objeto de mapa de colores utilizando ListedColormap.

    Aquí tienes un ejemplo de código que demuestra este enfoque:

    import matplotlib.pyplot as plt
    import numpy as np
    import matplotlib.colors as mcolors
    
    # define una gama de colores rojos, con diferentes saturaciones y brillos
    red_colors = [(1.0, 0.1*i, 0.1*i) for i in range(11)]
    
    X_example = np.random.rand(400)
    importance_values = np.random.rand(400)
    
    # crea un objeto ListedColormap utilizando la lista de colores rojos
    red_cmap = mcolors.ListedColormap(red_colors)
    
    plt.figure(figsize=(13,7))
    
    # utiliza el mapa de colores creado para rellenar las regiones
    for j in range(len(X_example)):
        plt.axvspan(xmin=j, xmax=j+1, facecolor=red_cmap(importance_values[j]), alpha=importance_values[j])
    plt.plot(X_example)
    
    # añade una barra de colores a la figura
    cbar = plt.colorbar(cm.ScalarMappable(norm=None, cmap=red_cmap), fraction=0.02, pad=0.04)
    cbar.set_label('Importancia')
    
    plt.show()
    

    Esto debería generar una figura con el efecto de mapa de colores deseado, como se muestra en la segunda figura. La función ListedColormap te permite especificar una lista de colores, que se mapearán al rango de valores en tus datos (en este caso, el arreglo importance_values). El argumento facecolor en axvspan se establece en el resultado de aplicar el mapa de colores al valor de datos correspondiente.

    Ten en cuenta que en este ejemplo también agregamos una barra de colores a la figura para proporcionar una leyenda para el mapa de colores.

Comments are closed.