backend_template#

Un back-end completamente funzionale e senza attività inteso come modello per gli autori di back-end. È completamente funzionale in quanto puoi selezionarlo come backend, ad esempio con

import matplotlib
matplotlib.use("template")

e il tuo programma funzionerà (dovrebbe!) senza errori, sebbene non venga prodotto alcun output. Questo fornisce un punto di partenza per gli autori di backend; puoi implementare selettivamente metodi di disegno ( draw_path, draw_image, ecc.) e vedere lentamente la tua figura prendere vita invece di dover avere un'implementazione completa prima di ottenere risultati.

Copia questo file in una directory al di fuori dell'albero dei sorgenti Matplotlib, da qualche parte dove Python può importarlo (aggiungendo la directory al tuo sys.patho impacchettandolo come un normale pacchetto Python); se il back-end è importabile, puoi selezionarlo utilizzandoimport my.backend

import matplotlib
matplotlib.use("module://my.backend")

Se il tuo backend implementa il supporto per il salvataggio delle cifre (cioè ha un print_xyz metodo), puoi registrarlo come gestore predefinito per un dato tipo di file:

from matplotlib.backend_bases import register_backend
register_backend('xyz', 'my_backend', 'XYZ File Format')
...
plt.savefig("figure.xyz")
matplotlib.backends.backend_template. FigureCanvas [fonte] #

alias diFigureCanvasTemplate

classe matplotlib.backends.backend_template. FigureCanvasTemplate ( figura = None ) [fonte] #

Basi:FigureCanvasBase

La tela in cui la figura si trasforma. Chiama i metodi draw e print fig, crea i renderer, ecc.

Nota: i modelli GUI vorranno connettere gli eventi per la pressione di pulsanti, movimenti del mouse e pressioni di tasti a funzioni che chiamano i metodi della classe base button_press_event, button_release_event, motion_notify_event, key_press_event e key_release_event. Vedere le implementazioni dei backend interattivi per esempi.

Attributi :
figuramatplotlib.figure.Figure

Un'istanza di Figure di alto livello

disegna ( ) [fonte] #

Disegna la figura usando il renderer.

È importante che questo metodo percorra effettivamente l'albero dell'artista anche se non viene prodotto alcun output perché ciò attiverà il lavoro differito (come i limiti di calcolo, i limiti automatici e i valori di tick) a cui gli utenti potrebbero voler accedere prima di salvare su disco.

filetypes = {'eps': 'Encapsulated Postscript', 'foo': 'My magic Foo format', 'jpeg': 'Joint Photographic Experts Group', 'jpg': 'Joint Photographic Experts Group', 'pdf': ' Portable Document Format', 'pgf': ' Codice PGF per LaTeX', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': 'Bitmap RGBA grezzo', 'rgba': 'Bitmap RGBA grezzo ', 'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', 'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format', 'webp': 'WebP Image Format '} #
get_default_filetype ( ) [fonte] #

Restituisce il formato di file savefig predefinito come specificato in rcParams["savefig.format"](default: 'png').

La stringa restituita non include un punto. Questo metodo viene sovrascritto nei backend che supportano solo un singolo tipo di file.

manager_class [fonte] #

alias diFigureManagerTemplate

print_foo ( nome file , * args , ** kwargs ) [fonte] #

Scrivi il formato foo.

Questo metodo è normalmente chiamato via Figure.savefige FigureCanvasBase.print_figure, che si occupa di impostare facecolor, edgecolor e dpi della figura ai valori di output desiderati e li ripristinerà ai valori originali. Pertanto, print_foonon è necessario gestire queste impostazioni.

matplotlib.backends.backend_template. FigureManager [fonte] #

alias diFigureManagerTemplate

classe matplotlib.backends.backend_template. FigureManagerTemplate ( canvas , num ) [fonte] #

Basi:FigureManagerBase

Classe di supporto per la modalità pyplot, racchiude tutto in un pacchetto ordinato.

Per i backend non interattivi, la classe base è sufficiente.

classe matplotlib.backends.backend_template. GraphicsContextTemplate [fonte] #

Basi:GraphicsContextBase

Il contesto grafico fornisce il colore, gli stili di linea, ecc. Vedere i backend cairo e postscript per esempi di mappatura degli attributi del contesto grafico (stili di estremità, stili di giunzione, spessori di linea, colori) a un particolare backend. In cairo questo viene fatto avvolgendo un oggetto cairo.Context e inoltrandogli le chiamate appropriate usando un dizionario che mappa gli stili alle costanti gdk. In Postscript, tutto il lavoro viene svolto dal renderer, mappando gli stili di linea alle chiamate postscript.

Se è più appropriato eseguire la mappatura a livello di renderer (come nel backend postscript), non è necessario eseguire l'override di nessuno dei metodi GC. Se è più appropriato eseguire il wrapping di un'istanza (come nel backend cairo) ed eseguire la mappatura qui, dovrai eseguire l'override di molti dei metodi setter.

Il GraphicsContext di base memorizza i colori come una tupla RGB sull'intervallo di unità, ad esempio (0.5, 0.0, 1.0). Potrebbe essere necessario mappare questo ai colori appropriati per il tuo back-end.

classe matplotlib.backends.backend_template. RendererTemplate ( dpi ) [fonte] #

Basi:RendererBase

Il renderer gestisce le operazioni di disegno/rendering.

Questa è una classe minima da non fare che può essere utilizzata per iniziare quando si scrive un nuovo backend. Fare riferimento a backend_bases.RendererBaseper la documentazione dei metodi.

draw_image ( gc , x , y , im ) [fonte] #

Disegna un'immagine RGBA.

Parametri :
gcGraphicsContextBase

Un contesto grafico con informazioni di ritaglio.

x scalare

La distanza in unità fisiche (ovvero, punti o pixel) dal lato sinistro della tela.

y scalare

La distanza in unità fisiche (ovvero, punti o pixel) dal lato inferiore dell'area di disegno.

im (N, M, 4) simile a un array di np.uint8

Un array di pixel RGBA.

trasformarematplotlib.transforms.Affine2DBase

Se e solo se il backend concreto è scritto in modo tale che option_scale_imagerestituisce True, può essere passata Affine2DBasea . Il vettore di traslazione della trasformazione è dato in unità fisiche (cioè, punti o pixel). Si noti che la trasformazione non sovrascrive x e y e deve essere applicata prima di tradurre il risultato in x e y (questo può essere ottenuto aggiungendo x e y al vettore di traduzione definito da transform ).draw_image

draw_path ( gc , path , transform , rgbFace = None ) [fonte] #

Disegna Pathun'istanza usando la trasformata affine data.

draw_text ( gc , x , y , s , prop , angle , ismath = False , mtext = None ) [fonte] #

Disegna un'istanza di testo.

Parametri :
gcGraphicsContextBase

Il contesto grafico.

x galleggiante

La posizione x del testo nelle coordinate di visualizzazione.

tu galleggi

La posizione y della linea di base del testo nelle coordinate di visualizzazione.

str _

La stringa di testo.

puntellomatplotlib.font_manager.FontProperties

Le proprietà del carattere.

galleggiante angolare

L'angolo di rotazione in gradi in senso antiorario.

mtestomatplotlib.text.Text

Oggetto di testo originale di cui eseguire il rendering.

Appunti

Nota per gli implementatori di backend:

Quando stai cercando di determinare se hai ottenuto il riquadro di delimitazione corretto (che è ciò che consente al layout/allineamento del testo di funzionare correttamente), è utile modificare la riga in text.py:

if 0: bbox_artist(self, renderer)

a se 1, quindi il riquadro di delimitazione effettivo verrà tracciato insieme al testo.

flipy ( ) [fonte] #

Restituisce se i valori y aumentano dall'alto verso il basso.

Si noti che questo riguarda solo il disegno dei testi.

get_canvas_width_height ( ) [fonte] #

Restituisce la larghezza e l'altezza della tela nelle coordinate di visualizzazione.

get_text_width_height_descent ( s , prop , ismath ) [fonte] #

Ottieni la larghezza, l'altezza e la discesa (offset dal basso alla linea di base), nelle coordinate di visualizzazione, della stringa s con prop .FontProperties

new_gc ( ) [fonte] #

Restituisce un'istanza di un file GraphicsContextBase.

punti_in_pixel ( punti ) [fonte] #

Converti i punti in unità di visualizzazione.

Devi sovrascrivere questa funzione (a meno che il tuo backend non abbia un dpi, ad esempio, postscript o svg). Alcuni sistemi di imaging assumono un certo valore per i pixel per pollice:

points to pixels = points * pixels_per_inch/72 * dpi/72
Parametri :
i punti sono float o simili a array

un float o un array numpy di float

Resi :
Punti convertiti in pixel
matplotlib.backends.backend_template. mostra ( * , blocco = Nessuno ) [fonte] #

Per i backend delle immagini - non è richiesto. Per i backend della GUI - show() è solitamente l'ultima riga di uno script pyplot e dice al backend che è ora di disegnare. In modalità interattiva, questo non dovrebbe fare nulla.