2011-10-19 38 views

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,)) 
+0

¡Excelente! 12345 – Petter

+0

¿Esto solo se admite en cierto back-end? No parece estar funcionando con el backend 'macosx' (' tostring_rgb') no encontrado. – mirosval

+1

Funciona en Agg, agrega 'matplotlib.use ('agg')' antes de 'import matplotlib.pyplot as plt' para usarlo. – mirosval

Cuestiones relacionadas