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í:
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 queax.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 elfor
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 unaplt.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