Guide des effets de chemin #

Définir les chemins suivis par les objets sur un canevas.

Le module de Matplotlib patheffectsfournit des fonctionnalités pour appliquer une étape de dessin multiple à n'importe quel artiste qui peut être rendu via un fichier path.Path.

Les artistes auxquels un effet de chemin peut être appliqué incluent patches.Patch, lines.Line2Det collections.Collectionmême text.Text. Les effets de chemin de chaque artiste peuvent être contrôlés via la Artist.set_path_effectsméthode, qui prend un itérable d' AbstractPathEffectinstances.

L'effet de chemin le plus simple est l' Normaleffet, qui dessine simplement l'artiste sans aucun effet :

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()
guide des effets de trajectoire

Alors que l'intrigue ne semble pas différente de ce à quoi vous vous attendriez sans aucun effet de chemin, le dessin du texte a maintenant été modifié pour utiliser le cadre des effets de chemin, ouvrant la possibilité d'exemples plus intéressants.

Ajouter une ombre #

Un effet de chemin beaucoup plus intéressant que Normall'ombre portée, que nous pouvons appliquer à n'importe lequel de nos artistes basés sur le chemin. Les classes SimplePatchShadow et SimpleLineShadowfont précisément cela en dessinant soit un patch rempli, soit un patch de ligne sous l'artiste d'origine :

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()
guide des effets de trajectoire

Notez les deux approches pour définir les effets de chemin dans cet exemple. Le premier utilise les with*classes pour inclure la fonctionnalité souhaitée suivie automatiquement de l'effet "normal", tandis que le second définit explicitement les deux effets de chemin à dessiner.

Faire ressortir un artiste #

Une bonne façon de faire ressortir visuellement les artistes est de dessiner un contour dans une couleur vive sous l'artiste réel. L' Strokeeffet de chemin en fait une tâche relativement simple :

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()
guide des effets de trajectoire

Il est important de noter que cet effet ne fonctionne que parce que nous avons tracé le chemin du texte deux fois ; une fois avec une ligne noire épaisse, puis une fois avec le chemin du texte d'origine en haut.

Vous avez peut-être remarqué que les mots-clés to Strokeet SimplePatchShadow et SimpleLineShadowne sont pas les mots-clés habituels de l'artiste ( facecolor edgecolor , etc.). En effet, avec ces effets de chemin, nous opérons à un niveau inférieur de Matplotlib. En fait, les mots-clés acceptés sont ceux d'une matplotlib.backend_bases.GraphicsContextBaseinstance, qui ont été conçus pour faciliter la création de nouveaux backends - et non pour son interface utilisateur.

Meilleur contrôle de l'artiste de l'effet de chemin #

Comme déjà mentionné, certains des effets de chemin fonctionnent à un niveau inférieur auquel la plupart des utilisateurs seront habitués, ce qui signifie que la définition de mots-clés tels que facecolor et edgecolor génère une AttributeError. Heureusement, il existe un PathPatchEffecteffet de chemin générique qui crée une patches.PathPatch classe avec le chemin d'origine. Les mots clés à cet effet sont identiques à ceux de 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()
guide des effets de trajectoire

Galerie générée par Sphinx-Gallery