|
|
|||||||||||||||||||||||||||||
| matplotlib Path effects guide. |
H.Kamifuji . |
|
オブジェクトがキャンバスに従うパスを定義する。 Matplotlib の patheffects モジュールは、Path 経由でレンダリングできる任意の Artist に複数の描画ステージを適用する機能を提供します。 パス効果を適用できるアーティストには、Patch 、Line2D 、Collection、Text などがあります。 各アーティストのパスエフェクトは、set_path_effects メソッド( set_path_effects )を使って制御できます。このメソッドは、AbstractPathEffect インスタンスを繰り返し使用できます。 最も単純なパスエフェクトは Normal エフェクトです。このエフェクトは単に効果を持たずにアーティストを描画します。
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()
![]() プロットはパス効果なしで期待どおりに見えないが、テキストの描画がパス効果フレームワークを使用するように変更され、より興味深い例が可能になる。 |
Normal よりもはるかに面白いパスエフェクトはドロップシャドウです。これは、パスベースのアーティストにも適用できます。 SimplePatchShadow クラスと SimpleLineShadow クラスは、元のアーティストの下に塗りつぶしパッチまたはラインパッチを描画することによって、これを正確に行います。
import matplotlib.pyplot as plt
import matplotlib.patheffects as path_effects
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()
![]() この例では、パスエフェクトを設定する2つの方法に注目してください。 最初の関数は with* クラスを使用して、目的の機能に自動的に "normal" エフェクトを追加します。後者は、描画する 2 つのパスエフェクトを明示的に定義します。 |
アーティストを視覚的に際立たせるうまい方法の 1 つは、実際のアーティストの下の太字でアウトラインを描くことです。 Stroke path エフェクトは、これを比較的単純なタスクにします。
import matplotlib.pyplot as plt
import matplotlib.patheffects as path_effects
import matplotlib.patheffects as path_effects
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()
![]() このエフェクトは、テキストパスを2回描画したためにのみ有効であることに注意することが重要です。 一度は太い黒線で、その後は元のテキストパスを一度上にしてください。 Stroke や SimplePatchShadow や SimpleLineShadow のキーワードは、一般的なアーティストのキーワード( facecolorやedgecolor など)ではありません。 これは、これらのパス効果で、私たちはより低いレベルの matplotlib で動作しているからです。 実際には、受け入れられるキーワードは matplotlib.backend_bases.GraphicsContextBase インスタンスのものです。新しいバックエンドの作成を容易にするために設計されています。ユーザーインターフェースではありません。 |
すでに述べたように、パスエフェクトの一部は、ほとんどのユーザーが使用するよりも低いレベルで動作します。つまり、facecolor や edgecolor などのキーワードを設定すると AttributeError が発生します。 幸いにも、元のパスを持つ PathPatch クラスを作成する一般的な PathPatchEffect パスエフェクトがあります。 この効果を得るためのキーワードは、PathPatch のキーワードと同じです。
import matplotlib.pyplot as plt
import matplotlib.patheffects as path_effects
import matplotlib.patheffects as path_effects
fig = plt.figure(figsize=(8, 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()
![]() |
| Path effects guide |
|