Matplotlib による 2 次元と 3 次元のプロット作成

Beginner

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

はじめに

この実験では、Matplotlib を使って 2 次元プロットと 3 次元プロットの両方を含むグラフを作成する方法を学びます。2 次元プロットでは減衰振動を表示し、3 次元プロットでは正弦波を表示します。

VM のヒント

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

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

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

ライブラリのインポート

このステップでは、この実験に必要なライブラリをインポートします。グラフ作成には Matplotlib を、配列作成には NumPy を、3 次元グラフ作成には mpl_toolkits を使用します。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

関数の定義

このステップでは、減衰振動を生成する関数を定義します。

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

グラフの作成

このステップでは、2 つのサブプロット付きのグラフを作成します。最初のサブプロットは 2 次元プロットで、2 番目のサブプロットは 3 次元プロットになります。

fig = plt.figure(figsize=plt.figaspect(2.))
fig.suptitle('A Tale of 2 Subplots')

2 次元プロットの作成

このステップでは、減衰振動の 2 次元プロットを作成します。

ax1 = fig.add_subplot(2, 1, 1)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
t3 = np.arange(0.0, 2.0, 0.01)

ax1.plot(t1, f(t1), 'bo',
         t2, f(t2), 'k--', markerfacecolor='green')
ax1.grid(True)
ax1.set_ylabel('Damped oscillation')

3 次元プロットの作成

このステップでは、正弦波の 3 次元プロットを作成します。

ax2 = fig.add_subplot(2, 1, 2, projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

surf = ax2.plot_surface(X, Y, Z, rstride=1, cstride=1,
                        linewidth=0, antialiased=False)
ax2.set_zlim(-1, 1)

プロットの表示

このステップでは、グラフを表示します。

plt.show()

まとめ

この実験では、Matplotlib を使って 2 次元と 3 次元の両方のプロット付きのグラフを作成しました。2 次元プロットは減衰振動を表示し、3 次元プロットは正弦波を表示しました。配列の作成には NumPy を、3 次元プロットには mpl_toolkits を使用しました。