コレクションを使った Matplotlib の可視化

PythonPythonBeginner
今すぐ練習

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

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

はじめに

このチュートリアルでは、Matplotlibコレクションを使用したビジュアライゼーションの作成方法を案内します。このチュートリアルでは、LineCollection、PolyCollection、およびRegularPolyCollectionの使い方を紹介します。また、LineCollectionとPolyCollectionのオフセットとoffset_transformキーワード引数を使って渦巻きの位置を設定する方法も紹介します。さらに、RegularPolyCollectionを使って正多角形を作成する方法も紹介します。

VMのヒント

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

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

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

必要なライブラリをインポートする

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import collections, transforms

最初のステップは、必要なライブラリをインポートすることです。このチュートリアルでは、MatplotlibとNumpyを使用します。

渦巻きを作成する

nverts = 50
npts = 100

## いくつかの渦巻きを作成する
r = np.arange(nverts)
theta = np.linspace(0, 2*np.pi, nverts)
xx = r * np.sin(theta)
yy = r * np.cos(theta)
spiral = np.column_stack([xx, yy])

次のステップは、Numpyを使って渦巻きを作成することです。渦巻きを作成するために、sinとcos関数を使用します。

オフセットを作成する

## 再現可能性のために乱数シードを固定する
rs = np.random.RandomState(19680801)

## いくつかのオフセットを作成する
xyo = rs.randn(npts, 2)

3番目のステップは、Numpyを使ってオフセットを作成することです。オフセットを作成するために、乱数関数を使用します。

オフセットを使ってLineCollectionを作成する

col = collections.LineCollection(
    [spiral], offsets=xyo, offset_transform=ax1.transData)
trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
col.set_transform(trans)
col.set_color(colors)

ax1.add_collection(col, autolim=True)
ax1.autoscale_view()

ax1.set_title('LineCollection using offsets')

4番目のステップは、オフセットを使ってLineCollectionを作成することです。オフセット付きの曲線を作成するためにLineCollectionを使用します。また、offset_transformを使って曲線の位置を設定します。

オフセットを使ってPolyCollectionを作成する

col = collections.PolyCollection(
    [spiral], offsets=xyo, offset_transform=ax2.transData)
trans = transforms.Affine2D().scale(fig.dpi/72.0)
col.set_transform(trans)
col.set_color(colors)

ax2.add_collection(col, autolim=True)
ax2.autoscale_view()

ax2.set_title('PolyCollection using offsets')

5番目のステップは、オフセットを使ってPolyCollectionを作成することです。曲線に色を塗りつぶすためにPolyCollectionを使用します。また、offset_transformを使って曲線の位置を設定します。

オフセットを使ってRegularPolyCollectionを作成する

col = collections.RegularPolyCollection(
    7, sizes=np.abs(xx) * 10.0, offsets=xyo, offset_transform=ax3.transData)
trans = transforms.Affine2D().scale(fig.dpi / 72.0)
col.set_transform(trans)
col.set_color(colors)

ax3.add_collection(col, autolim=True)
ax3.autoscale_view()

ax3.set_title('RegularPolyCollection using offsets')

6番目のステップは、オフセットを使ってRegularPolyCollectionを作成することです。オフセット付きの正多角形を作成するためにRegularPolyCollectionを使用します。また、offset_transformを使って多角形の位置を設定します。

連続するデータオフセットを作成する

## 一連の海流プロファイルをシミュレートし、0.1m/sずつオフセットして
## 「ウォーターフォール」プロットまたは「スタガー」プロットと呼ばれるものを作成します。

nverts = 60
ncurves = 20
offs = (0.1, 0.0)

yy = np.linspace(0, 2*np.pi, nverts)
ym = np.max(yy)
xx = (0.2 + (ym - yy) / ym) ** 2 * np.cos(yy - 0.4) * 0.5
segs = []
for i in range(ncurves):
    xxx = xx + 0.02*rs.randn(nverts)
    curve = np.column_stack([xxx, yy * 100])
    segs.append(curve)

col = collections.LineCollection(segs, offsets=offs)
ax4.add_collection(col, autolim=True)
col.set_color(colors)
ax4.autoscale_view()

ax4.set_title('Successive data offsets')
ax4.set_xlabel('Zonal velocity component (m/s)')
ax4.set_ylabel('Depth (m)')
ax4.set_ylim(ax4.get_ylim()[::-1])

7番目のステップは、連続するデータオフセットを作成することです。連続するオフセット付きの曲線を作成するためにLineCollectionを使用します。

まとめ

このチュートリアルでは、Matplotlibコレクションを使ってグラフを作成する方法を紹介しました。LineCollection、PolyCollection、RegularPolyCollectionを使って曲線や多角形を作成する方法を学びました。また、LineCollectionとPolyCollectionのoffsetsおよびoffset_transformキーワード引数を使って渦巻きの位置を設定する方法も学びました。