Figuras separadas mediante comprensión de la lista

Mi código actual produce cifras superpuestas para cada elemento en la lista prueba. ¿Cómo puedo producir dos figuras separadas usando la comprensión de la lista? (Preferiblemente usando sólo una línea de código).

test=[[1, 2, 3, 4],[5, 6, 7, 8]]
[plt.plot(test[k]) for k in range(0,2)]

La salida actual se ve así:

Current output

Pregunta hecha hace 3 años, 4 meses, 26 días - Por binarybard


3 Respuestas:

  • Como se explica en el Matplotlib Guía de uso, plt.plot funciona de la misma manera que ax.plot método de grafitura:

    para cada uno Método de grafitura de ejes, hay una función correspondiente en el matplotlib. módulo de pyplot que realiza esa trama en los ejes "actuales", creando que ejes (y su figura padre) si aún no existen.

    Así que cuando usted ejecuta la comprensión de la lista que ha dado como un ejemplo, el primero plt.plot método llamada en el for el bucle crea un nuevo gráfico objeto que contiene un objeto Axes niño. Luego, como se indica en la sección tutorial de Matplotlib Pyplot trabajando con múltiples figuras y ejes:

    MATLAB, y pyplot, tienen el concepto de la figura actual y los ejes actuales. Todas las funciones de trazado se aplican a los ejes actuales.

    Es por eso que todos los siguientes plt.plot las llamadas en el bucle están siendo trazadas en la misma figura. Para dibujar las líneas en figuras separadas, se debe crear una nueva figura para cada una plt.plot llamar así:

    test = [[1, 2, 3, 4],[5, 6, 7, 8]]
    for k in range(len(test)): plt.figure(), plt.plot(test[k])
    

    Editar: basado en el comentario de JohanC (sobre la cuestión), sustituyó la comprensión de la lista con una declaración compuesta de una sola línea. Aunque esto va en contra PEP 8, de hecho hace que el código sea más legible mientras cumple el requisito de una línea.

    Respondida el Dec 19, 2020 a las 09:32 - por quantumquasar

    Votos positivos: 0 | Votos negativos: 0

  • Para producir dos figuras separadas utilizando la comprensión de lista en una sola línea de código, puedes crear dos subplots distintos en cada iteración y usar plt.figure() para crear una nueva figura en cada paso. Aquí te muestro cómo puedes hacerlo:

    python
    [test_plot:=plt.figure() and plt.plot(test[k]) for k in range(0,2)]
    

    Con esta modificación, se creará una nueva figura para cada subploteo en la lista test, evitando así que las visualizaciones se superpongan.

    Respondida el Dec 20, 2020 a las 09:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para crear dos figuras separadas usando comprensión de listas, puedes usar el siguiente código:

    
    [plt.figure(); plt.plot(test[k]) for k in range(0,2)]
    

    Esta línea de código primero crea una nueva figura para cada elemento en la lista test. Luego, traza los datos en cada figura.

    La salida se verá así:

    [Imagen de dos figuras separadas con gráficos]

    Ten en cuenta que es importante encerrar el código de trazado dentro de una función lambda para garantizar que cada figura se cree por separado.

    Respondida el Dec 20, 2020 a las 09:41 - por Gemini

    Votos positivos: 0 | Votos negativos: 0