L'enregistrement d'un imshow comme l'image tout en préservant la résolution

J'ai une (n, m) tableau que j'ai été visualisation matplotlib.pyplot.imshow. J'aimerais enregistrer ces données dans un certain type de raster fichier graphique (par exemple un png) de sorte que:

  1. Les couleurs sont celles illustrées avec imshow
  2. Chaque élément de la sous-matrice est exactement un pixel dans l'image enregistrée, ce qui signifie que si le sous-jacent de la matrice est (n, m) des éléments, l'image est NxM pixels. (Je ne suis pas intéressé à interpolation='nearest' dans imshow.)
  3. Il n'y a rien dans l'image enregistrée, sauf pour les pixels correspondant aux données du tableau. (I. e. il n'y a pas d'espace blanc autour des bords, axes, etc.)

Comment puis-je faire cela?

J'ai vu un peu de code qui permet de le faire en utilisant interpolation='nearest' et forçant matplotlib (à contrecœur) désactiver les axes, d'espaces, etc. Cependant, il doit y avoir un moyen de le faire plus directement, peut-être avec PIL? Après tout, j'ai les données sous-jacentes. Si je peux obtenir une valeur RVB pour chaque élément de la sous-tableau, alors je peux l'enregistrer avec PIL. Est-il un moyen d'extraire les données RVB de imshow? Je peux écrire mon propre code pour mapper les valeurs de tableau pour les valeurs RVB, mais je ne veux pas réinventer la roue, car cette fonctionnalité existe déjà dans matplotlib.

OriginalL'auteur lnmaurer | 2015-07-21