概要
Matplotlib は、ユーザーがデータを簡単にグラフ化し、さまざまな出力形式を提供できる Python グラフィック ライブラリです。
Matplotlib を使用すると、さまざまな静的、動的、対話型のグラフを描画できます。
Matplotlib は非常に強力な Python 描画ツールであり、このツールを使用すると、多くのデータをグラフの形式でより直観的に表示できます。
Matplotlib は、折れ線グラフ、散布図、等高線図、棒グラフ、ヒストグラム、3D グラフィックス、さらにはグラフィック アニメーションなどを描画できます。
matplotlib を使用して描画する原理は、主に図 (キャンバス)、軸 (座標系)、および軸 (座標軸) の関係を理解することです。
グラフオブジェクトの概要
フィギュア: キャンバス
Figure には任意の数の座標系を含めることができます
軸:座標系
これは「図面」とみなされるものです。データ スペースを持つイメージ領域です。軸は 1 つの Figure にのみ属することができます。軸には 2 つまたは 3 つの軸を含めることができます。
軸: 座標軸
これらは数直線のようなオブジェクトです。これらは、グラフの範囲を設定し、目盛り (軸上のマーカー) と目盛りラベル (目盛りをマークする文字列) を生成する役割を果たします。
Matplotlib アプリケーション
Matplotlib は、通常、NumPy および SciPy (科学 Python) と一緒に使用されます。この組み合わせは、MatLab を置き換えるために広く使用されています。これは、Python を介してデータ サイエンスや機械学習を学習するのに役立つ強力な科学コンピューティング環境です。
SciPy は、オープンソースの Python アルゴリズム ライブラリおよび数学ツールキットです。
SciPy には、最適化、線形代数、積分、補間、特殊関数、高速フーリエ変換、信号処理と画像処理、常微分方程式の解法、および科学と工学で一般的に使用されるその他の計算のためのモジュールが含まれています。
Pyplot は Matplotlib のサブライブラリであり、MATLAB と同様の描画 API を提供します。
Pyplot は、ユーザーが 2D チャートを簡単に描画できるようにする、一般的に使用される描画モジュールです。
Pyplot には、描画関数に関連する一連の関数が含まれており、各関数は、画像へのマーカーの追加、新しい画像の生成、画像内の新しい描画領域の生成など、現在の画像にいくつかの変更を加えます。
NumPy (Numerical Python) は、多数の次元配列および行列演算をサポートする Python 言語の拡張ライブラリであり、さらに、配列演算用の多数の数学関数ライブラリも提供します。
NumPy の前身である Numeric は、Jim Hugunin と他の共同研究者によって最初に開発されました。2005 年に、Travis Oliphant は、同じ性質の別のライブラリである Numarray の機能を Numeric に結合し、その他の拡張機能を追加して NumPy を開発しました。NumPy はオープンソースであり、多くの協力者によって維持および開発されています。
NumPy は非常に高速な数学ライブラリであり、主に次のような配列計算に使用されます。
- 強力な N 次元配列オブジェクト ndarray
- ブロードキャスト機能
- C/C++/Fortran コードを統合するためのツール
- 線形代数、フーリエ変換、乱数生成などの機能
基本的なグラフィックス 1:
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.plot(xpoints, ypoints)
plt.show()
グラフィック 2:
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, color = 'r')
plt.show()
図3:
import matplotlib.pyplot as plt
import numpy as np
x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])
plt.bar(x, y, color = ["#4CAF50","red","hotpink","#556B2F"])
plt.show()
図4:
import math
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
def beta_pdf(x, a, b):
return (x**(a-1) * (1-x)**(b-1) * math.gamma(a + b)
/ (math.gamma(a) * math.gamma(b)))
class UpdateDist:
def __init__(self, ax, prob=0.5):
self.success = 0
self.prob = prob
self.line, = ax.plot([], [], 'k-')
self.x = np.linspace(0, 1, 200)
self.ax = ax
# Set up plot parameters
self.ax.set_xlim(0, 1)
self.ax.set_ylim(0, 10)
self.ax.grid(True)
# This vertical line represents the theoretical value, to
# which the plotted distribution should converge.
self.ax.axvline(prob, linestyle='--', color='black')
def __call__(self, i):
# This way the plot can continuously run and we just keep
# watching new realizations of the process
if i == 0:
self.success = 0
self.line.set_data([], [])
return self.line,
# Choose success based on exceed a threshold with a uniform pick
if np.random.rand(1,) < self.prob:
self.success += 1
y = beta_pdf(self.x, self.success + 1, (i - self.success) + 1)
self.line.set_data(self.x, y)
return self.line,
# Fixing random state for reproducibility
np.random.seed(19680801)
fig, ax = plt.subplots()
ud = UpdateDist(ax, prob=0.7)
anim = FuncAnimation(fig, ud, frames=100, interval=100, blit=True)
plt.show()
公式ドキュメント:
Matplotlib: Python プロット — Matplotlib 3.3.3 をダウンロード
GitHub - matplotlib/matplotlib: matplotlib: Python を使用したプロット