Guida agli effetti del percorso #

Definire i percorsi che gli oggetti seguono su una tela.

Il modulo di Matplotlib patheffectsfornisce funzionalità per applicare una fase di disegno multiplo a qualsiasi artista che può essere renderizzata tramite un file path.Path.

Gli artisti a cui è possibile applicare un effetto tracciato includono patches.Patch, lines.Line2De collections.Collectionpersino text.Text. Gli effetti del percorso di ogni artista possono essere controllati tramite il Artist.set_path_effectsmetodo, che richiede un iterabile di AbstractPathEffectistanze.

L'effetto percorso più semplice è l' Normaleffetto, che disegna semplicemente l'artista senza alcun effetto:

import matplotlib.pyplot as plt
import matplotlib.patheffects as path_effects

fig = plt.figure(figsize=(5, 1.5))
text = fig.text(0.5, 0.5, 'Hello path effects world!\nThis is the normal '
                          'path effect.\nPretty dull, huh?',
                ha='center', va='center', size=20)
text.set_path_effects([path_effects.Normal()])
plt.show()
guida agli effetti del percorso

Sebbene la trama non sembri diversa da come ci si aspetterebbe senza effetti di tracciato, il disegno del testo è stato ora modificato per utilizzare la struttura degli effetti di tracciato, aprendo la possibilità a esempi più interessanti.

Aggiunta di un'ombra #

Un effetto percorso molto più interessante Normaldell'ombra esterna, che possiamo applicare a tutti i nostri artisti basati sul percorso. Le classi SimplePatchShadow e SimpleLineShadowfanno esattamente questo disegnando una patch piena o una patch di linea sotto l'artista originale:

import matplotlib.patheffects as path_effects

text = plt.text(0.5, 0.5, 'Hello path effects world!',
                path_effects=[path_effects.withSimplePatchShadow()])

plt.plot([0, 3, 2, 5], linewidth=5, color='blue',
         path_effects=[path_effects.SimpleLineShadow(),
                       path_effects.Normal()])
plt.show()
guida agli effetti del percorso

Notare i due approcci all'impostazione degli effetti del percorso in questo esempio. Il primo utilizza le with*classi per includere automaticamente la funzionalità desiderata seguita dall'effetto "normale", mentre il secondo definisce esplicitamente i due effetti di percorso da disegnare.

Far risaltare un artista #

Un bel modo per far risaltare visivamente gli artisti è tracciare un contorno in un colore audace sotto l'artista vero e proprio. L' Strokeeffetto percorso rende questo compito relativamente semplice:

fig = plt.figure(figsize=(7, 1))
text = fig.text(0.5, 0.5, 'This text stands out because of\n'
                          'its black border.', color='white',
                          ha='center', va='center', size=30)
text.set_path_effects([path_effects.Stroke(linewidth=3, foreground='black'),
                       path_effects.Normal()])
plt.show()
guida agli effetti del percorso

È importante notare che questo effetto funziona solo perché abbiamo disegnato due volte il percorso del testo; una volta con una spessa linea nera, e poi una volta con il percorso del testo originale sopra.

Potresti aver notato che le parole chiave to Strokee SimplePatchShadow e SimpleLineShadownon sono le solite parole chiave Artist ( facecolor edgecolor , ecc.). Questo perché con questi effetti di percorso stiamo operando a un livello inferiore di Matplotlib. Infatti, le parole chiave accettate sono quelle per matplotlib.backend_bases.GraphicsContextBaseun'istanza, che sono state progettate per facilitare la creazione di nuovi backend e non per la sua interfaccia utente.

Maggiore controllo del percorso effetto artista #

Come già accennato, alcuni degli effetti del percorso operano a un livello inferiore a quello a cui sarà abituata la maggior parte degli utenti, il che significa che l'impostazione di parole chiave come facecolor e edgecolor genera un AttributeError. Fortunatamente c'è un PathPatchEffecteffetto percorso generico che crea una patches.PathPatch classe con il percorso originale. Le parole chiave in tal senso sono identiche a quelle di patches.PathPatch:

fig = plt.figure(figsize=(8.5, 1))
t = fig.text(0.02, 0.5, 'Hatch shadow', fontsize=75, weight=1000, va='center')
t.set_path_effects([
    path_effects.PathPatchEffect(
        offset=(4, -4), hatch='xxxx', facecolor='gray'),
    path_effects.PathPatchEffect(
        edgecolor='white', linewidth=1.1, facecolor='black')])
plt.show()
guida agli effetti del percorso

Galleria generata da Sphinx-Gallery