Matplotlib を使った誤差棒のサブサンプリング

Beginner

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

はじめに

データ可視化において、誤差棒をプロットしてデータの不確定性や変動性を示すことは、時には便利です。ただし、似たような誤差を持つデータポイントが多い場合、プロットが雑になり解釈が難しくなることがあります。そのような場合、誤差棒サブサンプリングを使用することができます。これにより、データポイントのサブセットにのみ誤差棒を描画することができます。このチュートリアルでは、Matplotlib のerrorbar関数を使用して、データに誤差棒サブサンプリングを適用する方法を示します。

VM のヒント

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

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

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

ライブラリのインポートとデータの生成

まず、必要なライブラリをインポートして、使用するサンプルデータを生成する必要があります。この例では、データの生成に numpy を、可視化に matplotlib を使用します。

import matplotlib.pyplot as plt
import numpy as np

## example data
x = np.arange(0.1, 4, 0.1)
y1 = np.exp(-1.0 * x)
y2 = np.exp(-0.5 * x)

## example variable error bar values
y1err = 0.1 + 0.1 * np.sqrt(x)
y2err = 0.1 + 0.1 * np.sqrt(x/2)

すべての誤差棒をプロットする

次に、サブサンプリングなしでerrorbar関数を使用してすべての誤差棒をプロットします。これがベースラインのプロットとなります。

fig, ax = plt.subplots()

ax.set_title('All Errorbars')
ax.errorbar(x, y1, yerr=y1err, label='y1')
ax.errorbar(x, y2, yerr=y2err, label='y2')

ax.legend()
plt.show()

6 番目の誤差棒ごとにサブサンプリングする

次に、誤差棒サブサンプリングを適用して、6 番目の誤差棒のみをプロットしましょう。これは、errorbar関数のerroreveryパラメータを使用することで行えます。

fig, ax = plt.subplots()

ax.set_title('Every 6th Errorbar')
ax.errorbar(x, y1, yerr=y1err, errorevery=6, label='y1')
ax.errorbar(x, y2, yerr=y2err, errorevery=6, label='y2')

ax.legend()
plt.show()

2 番目の系列を 3 だけシフトする

場合によっては、データの異なる部分に誤差棒サブサンプリングを適用したい場合があります。これは、erroreveryパラメータにタプルを指定することで行うことができます。たとえば、2 番目の系列に誤差棒サブサンプリングを適用し、3 つのデータポイントだけシフトさせましょう。

fig, ax = plt.subplots()

ax.set_title('Second Series Shifted by 3')
ax.errorbar(x, y1, yerr=y1err, label='y1')
ax.errorbar(x, y2, yerr=y2err, errorevery=(3, 6), label='y2')

ax.legend()
plt.show()

まとめ

このチュートリアルでは、Matplotlib のerrorbar関数を使って、データに誤差棒サブサンプリングを適用する方法を学びました。erroreveryパラメータを使うことで、データポイントのサブセットにのみ誤差棒を選択的にプロットすることができ、これによりグラフをより読みやすく解釈しやすくすることができます。