Matplotlib: guardar la ttwig en una matriz numpy

En Python y Matplotlib, es fácil mostrar el gráfico como una ventana emergente o guardar el gráfico como un archivo PNG. ¿Cómo puedo guardar la gráfica en una matriz numpy en formato RGB?

Este es un truco útil para pruebas unitarias y similares, cuando necesita hacer una comparación de píxel a píxel con un gráfico guardado.

Una forma es usar fig.canvas.tostring_rgb y luego numpy.fromstring con el dtype apropiado. También hay otras formas, pero esta es la que suelo utilizar.

P.ej

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