Utilisation du backend Agg de Matplotlib pour la génération d'images

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire vous guidera tout au long du processus d'utilisation directement du backend agg pour créer des images dans Python Matplotlib. Le backend agg est utile pour les développeurs d'applications web qui souhaitent avoir un contrôle total sur leur code sans utiliser l'interface pyplot pour gérer les figures, la fermeture des figures, etc. Dans ce laboratoire, nous allons vous montrer comment enregistrer le contenu de la toile agg dans un fichier et comment l'extraire dans un tableau numpy, qui peut à son tour être transmis à Pillow.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet d'étude pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) matplotlib(("Matplotlib")) -.-> matplotlib/AdvancedTopicsGroup(["Advanced Topics"]) matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") matplotlib/BasicConceptsGroup -.-> matplotlib/saving_figures("Saving Figures to File") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") matplotlib/AdvancedTopicsGroup -.-> matplotlib/custom_backends("Custom Backends") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/figures_axes -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} matplotlib/saving_figures -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} matplotlib/line_plots -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} python/lists -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} python/tuples -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} python/importing_modules -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} python/using_packages -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} matplotlib/custom_backends -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} python/data_visualization -.-> lab-48596{{"Utilisation du backend Agg de Matplotlib pour la génération d'images"}} end

Créer une figure et une toile

Tout d'abord, nous devons créer une figure et une toile. La figure définit la taille, la forme et le contenu du tracé, tandis que la toile est l'endroit où la figure est dessinée.

from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure

fig = Figure(figsize=(5, 4), dpi=100)
canvas = FigureCanvasAgg(fig)

Ajouter des données de tracé à la figure

Maintenant que nous avons une figure et une toile, nous pouvons ajouter des données au tracé. Dans cet exemple, nous allons ajouter un tracé de ligne simple.

ax = fig.add_subplot()
ax.plot([1, 2, 3])

Enregistrer la figure dans un fichier

Il existe deux options pour enregistrer le tracé. La première option est d'enregistrer la figure dans un fichier. Dans cet exemple, nous allons enregistrer le tracé sous forme d'image PNG.

fig.savefig("test.png")

Extraire le tampon du render dans un tableau numpy

La deuxième option pour enregistrer le tracé est d'extraire le tampon du render dans un tableau numpy. Cela nous permet d'utiliser Matplotlib dans un script cgi sans avoir besoin d'écrire une figure sur le disque. Dans cet exemple, nous allons extraire le tampon du render et le convertir en un tableau numpy.

canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())

Enregistrer le tableau numpy sous forme d'image Pillow

Maintenant que nous avons le tableau numpy, nous pouvons le passer à Pillow et l'enregistrer au format pris en charge par Pillow. Dans cet exemple, nous allons enregistrer le tracé sous forme d'image BMP.

im = Image.fromarray(rgba)
im.save("test.bmp")

Sommaire

Dans ce laboratoire, nous vous avons montré comment utiliser le backend agg dans Matplotlib Python pour créer des images. Nous avons créé une figure et une toile, ajouté des données au tracé et enregistré le tracé sous forme d'image PNG. Nous avons également extrait le tampon du render dans un tableau numpy et enregistré le tracé sous forme d'image BMP à l'aide de Pillow. Ces techniques sont utiles pour les développeurs d'applications web qui souhaitent avoir un contrôle total sur leur code sans utiliser l'interface pyplot pour gérer les figures, la fermeture des figures, etc.