Matplotlib パスエフェクトチュートリアル

Beginner

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

はじめに

この実験では、Matplotlib でパスエフェクトを使用してプロットに特殊効果を追加する方法を学びます。パスエフェクトを使用すると、テキストやプロット要素にカスタムのストローク、シャドウ、その他の視覚的効果を追加できます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使用して練習します。

場合によっては、Jupyter Notebook が読み込み完了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。

ライブラリのインポートとデータの準備

まず、必要なライブラリをインポートして、プロットするためのいくつかのデータを準備する必要があります。

import matplotlib.pyplot as plt
import numpy as np

## Prepare data
arr = np.arange(25).reshape((5, 5))

テキストにストロークエフェクトを追加する

withStroke パスエフェクトを使用して、テキストにストロークエフェクトを追加することができます。この例では、プロット内のテキスト注釈にストロークエフェクトを追加します。

## Create plot and add text annotation with stroke effect
fig, ax = plt.subplots()
ax.imshow(arr)
txt = ax.annotate("test", (1., 1.), (0., 0),
                   arrowprops=dict(arrowstyle="->",
                                   connectionstyle="angle3", lw=2),
                   size=20, ha="center",
                   path_effects=[patheffects.withStroke(linewidth=3,
                                                        foreground="w")])
txt.arrow_patch.set_path_effects([
    patheffects.Stroke(linewidth=5, foreground="w"),
    patheffects.Normal()])

## Add grid with stroke effect
pe = [patheffects.withStroke(linewidth=3,
                             foreground="w")]
ax.grid(True, linestyle="-", path_effects=pe)

plt.show()

等高線にストロークエフェクトを追加する

withStroke パスエフェクトを使用して、等高線とそのラベルにもストロークエフェクトを追加することができます。

## Create plot and add contour lines with stroke effect
fig, ax = plt.subplots()
ax.imshow(arr)
cntr = ax.contour(arr, colors="k")

plt.setp(cntr.collections, path_effects=[
    patheffects.withStroke(linewidth=3, foreground="w")])

clbls = ax.clabel(cntr, fmt="%2.0f", use_clabeltext=True)
plt.setp(clbls, path_effects=[
    patheffects.withStroke(linewidth=3, foreground="w")])

plt.show()

凡例に影のエフェクトを追加する

withSimplePatchShadow パスエフェクトを使用して、凡例に影のエフェクトを追加することができます。

## Create plot and add shadow effect to legend
fig, ax = plt.subplots()
p1, = ax.plot([0, 1], [0, 1])
leg = ax.legend([p1], ["Line 1"], fancybox=True, loc='upper left')
leg.legendPatch.set_path_effects([patheffects.withSimplePatchShadow()])

plt.show()

まとめ

この実験では、Matplotlib でパスエフェクトを使用してプロットに特殊なエフェクトを追加する方法を学びました。テキスト、等高線とそのラベルにストロークエフェクトを追加する方法、および凡例に影のエフェクトを追加する方法を学びました。パスエフェクトを使えば、データを明確かつ簡潔に伝える視覚的に印象的なプロットを作成できます。