Python における Matplotlib の可視化制御

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Matplotlib は、Python で静的、アニメーション、インタラクティブなビジュアライゼーションを作成するために使用される Python のデータ可視化ライブラリです。また、Tkinter、wxPython、Qt、または GTK のような汎用 GUI ツールキットを使用して、アプリケーションにプロットを埋め込むためのオブジェクト指向 API を提供します。この実験では、Python を使って Matplotlib のビューの制限と固定エッジを制御する方法を学びます。

VM のヒント

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

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

マージン付きのプロット作成

Matplotlib のmargins()メソッドを使用すると、set_xlim()およびset_ylim()メソッドを使用する代わりに、プロットのマージンを設定できます。このステップでは、set_xlim()およびset_ylim()メソッドの代わりにmargins()メソッドを使用してプロットをズームインおよびズームアウトする方法を学びます。

import matplotlib.pyplot as plt
import numpy as np

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)

t1 = np.arange(0.0, 3.0, 0.01)

## マージン付きのサブプロットを作成
ax1 = plt.subplot(212)
ax1.margins(0.05) ## デフォルトのマージンは 0.05、値 0 はフィットを意味する
ax1.plot(t1, f(t1))

## ズームアウトしたマージン付きのサブプロットを作成
ax2 = plt.subplot(221)
ax2.margins(2, 2) ## 値>0.0 はズームアウト
ax2.plot(t1, f(t1))
ax2.set_title('Zoomed out')

## ズームインしたマージン付きのサブプロットを作成
ax3 = plt.subplot(222)
ax3.margins(x=0, y=-0.25) ## (-0.5, 0.0) の値は中央にズームイン
ax3.plot(t1, f(t1))
ax3.set_title('Zoomed in')

plt.show()

固定エッジ

Matplotlib の一部のプロット作成関数は、軸の制限を「固定」させるか、margins()メソッドに対して免疫にすることができます。たとえば、imshow()pcolor()は、ユーザーがプロットに表示されるピクセルの周りの制限を厳密にすることを望んでいると想定しています。この動作が望ましくない場合は、use_sticky_edgesFalseに設定する必要があります。このステップでは、Matplotlib の固定エッジを回避する方法を学びます。

## グリッドを作成
y, x = np.mgrid[:5, 1:6]

## ポリゴンの座標を定義
poly_coords = [
    (0.25, 2.75), (3.25, 2.75),
    (2.25, 0.75), (0.25, 0.75)
]

## サブプロットを作成
fig, (ax1, ax2) = plt.subplots(ncols=2)

## ax1 で固定エッジを使用し、ax2 で固定エッジをオフにする
ax2.use_sticky_edges = False

## 両方のサブプロットにプロットする
for ax, status in zip((ax1, ax2), ('Is', 'Is Not')):
    cells = ax.pcolor(x, y, x+y, cmap='inferno', shading='auto') ## 固定
    ax.add_patch(
        Polygon(poly_coords, color='forestgreen', alpha=0.5)
    ) ## 固定ではない
    ax.margins(x=0.1, y=0.05)
    ax.set_aspect('equal')
    ax.set_title(f'{status} Sticky')

plt.show()

まとめ

この実験では、Python を使って Matplotlib のビューの制限と固定エッジを制御する方法を学びました。set_xlim()およびset_ylim()メソッドの代わりにmargins()メソッドを使用してプロットをズームインおよびズームアウトする方法を学びました。また、use_sticky_edgesプロパティを使って Matplotlib の固定エッジを回避する方法も学びました。