En Python y Matplotlib, es fácil mostrar el diagrama como una ventana emergente o guardar el trazado como un archivo PNG. ¿Cómo puedo guardar la trama en una matriz numpy en formato RGB?Matplotlib: guardar el gráfico en numpy array
15
A
Respuesta
35
Este es un truco útil para pruebas unitarias y similares, cuando se necesita hacer una comparación de píxel a píxel con una gráfica guardada.
Una forma es usar fig.canvas.tostring_rgb
y luego numpy.fromstring
con el tipo de letra correspondiente. También hay otras formas, pero esta es la que tiendo a usar.
E.g.
import matplotlib.pyplot as plt
import numpy as np
# Make a random plot...
fig = plt.figure()
fig.add_subplot(111)
# If we haven't already shown or saved the plot, then we need to
# draw the figure first...
fig.canvas.draw()
# Now we can save it to a numpy array.
data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
Cuestiones relacionadas
- 1. Matplotlib - Gráfico de contorno con valor único
- 2. Convertir numpy array en tupla
- 3. Rotar numpy 2D array
- 4. numpy array of objects
- 5. Numpy Array sumando pesos
- 6. Numpy matrix to array
- 7. Allanar numpy array
- 8. Convertir Numpy Array a OpenCV Array
- 9. Cómo eliminar líneas en un gráfico Matplotlib
- 10. matplotlib gráfico imagen pequeña sin remuestreo
- 11. Guardar una subtrama en matplotlib
- 12. matplotlib gráfico de barras centrado con fechas
- 13. Numpy modify array in place?
- 14. Python numpy array vs list
- 15. Coincidencia condicional de Numpy array
- 16. Shift todos los índices en array NumPy
- 17. Obteniendo datos de ctypes array en numpy
- 18. Cadena más larga en numpy object_ array
- 19. múltiples condiciones usando 'o' en array numpy
- 20. Matplotlib: gráfico de contorno con control deslizante
- 21. Matplotlib: gráfico interactivo en un servidor web
- 22. Numpy Array a base64 y de vuelta a Numpy Array - Python
- 23. Trazado de un gráfico de superficie enmascarado usando python, numpy y matplotlib
- 24. Alojamiento web Python: Numpy, Matplotlib, Scientific Computing
- 25. trazado de histograma 3d/gráfico de barras en python matplotlib
- 26. matplotlib: 2 leyendas diferentes en el mismo gráfico
- 27. Reduce los márgenes izquierdo y derecho en el gráfico matplotlib
- 28. ¿Cómo dibujar distribuciones probabilísticas con numpy/matplotlib?
- 29. ¿Cómo acelerar el matplotlib al trazar y guardar muchas figuras?
- 30. pyopengl buffer dynamic read from numpy array
¡Excelente! 12345 – Petter
¿Esto solo se admite en cierto back-end? No parece estar funcionando con el backend 'macosx' (' tostring_rgb') no encontrado. – mirosval
Funciona en Agg, agrega 'matplotlib.use ('agg')' antes de 'import matplotlib.pyplot as plt' para usarlo. – mirosval