XLPack for Matplotlib ユーザーマニュアル
1. 概要
XLPack for Matplotlib (以下 XLPack MPL と略記します) は Excel VBA より Python の Matplotlib を呼び出すことができるようにするためのライブラリプログラムです.
Matplotlib の主要な Python クラスおよびメソッドを VBA のクラスおよびメソッドにマッピングして VBA プログラムだけで Matplotlib を使用できるようにしたものです.
本プログラムは, 数値計算ライブラリ XLPack と組み合わせて, Excel で計算から結果の表示までを行うための可視化機能部分として試験的に開発中のものです. 対応する Matplotlib 関数は順次増やしていく予定ですが, 不足するものは別途提供される XLPack for Python を使用して補うこともできます.
2. 例題
使用イメージをつかむために簡単な例題を見てみます.
pyplot.plot を使ってサインカーブをプロットする例題です. Python では次のように書かれます.
import matplotlib.pyplot as plt
import numpy as np
import math
# make data
t = np.linspace(0, 2, 201)
s = 1 + np.sin(2 * math.pi * t)
# plot
plt.plot(t, s, '-b')
plt.xlabel("time (s)")
plt.ylabel("voltage (mV)")
plt.title("About as simple as it gets, folks")
plt.grid()
plt.show()
これと同じものを次のように VBA で書くことができます.
Dim Plt As New PyPlot
Function Pi() As Double
Pi = 4 * Atn(1)
End Function
Sub Linspace(A As Double, B As Double, N As Long, X() As Double)
Dim I As Long
For I = 0 To N - 1
X(I) = A + I * ((B - A) / (N - 1))
Next
End Sub
Sub Test_Plt_Plot()
Const N = 201
Dim T(N - 1) As Double, S(N - 1) As Double
Dim I As Long
Call Linspace(0, 2, N, T())
For I = 0 To N - 1
S(I) = 1 + Sin(2 * Pi() * T(I))
Next
Call Plt.Plot(N, T(), S(), "-b")
Call Plt.Xlabel("time (s)")
Call Plt.Ylabel("voltage (mV)")
Call Plt.Title("About as simple as it gets, folks")
Call Plt.Grid
Call Plt.Show
End Sub
VBA では Pyplot.Plot() のようにいきなりメソッドを呼び出すことはできないので, プログラムのどこかで (1 箇所でよい) Dim Plt As New PyPlot として PyPlot オブジェクトを作っておく必要があります. あとは Python と同じ要領でプログラミングすることができます.
実行結果はどちらも次のようになります.

同じ例題を Pyplot ではなくオブジェクトを使って書くこともできて, メインプログラムは次のようになります.
Sub Test_Plot()
Const N = 201
Dim T(N - 1) As Double, S(N - 1) As Double
Dim I As Long
Dim Fig As Figure, Ax As Axs
Call Linspace(0, 2, N, T())
For I = 0 To N - 1
S(I) = 1 + Sin(2 * Pi() * T(I))
Next
Set Fig = Plt.Figure()
Set Ax = Fig.Gca()
Call Ax.Plot(N, T(), S(), "-b")
Call Ax.Set_xlabel("time (s)")
Call Ax.Set_ylabel("voltage (mV)")
Call Ax.Set_title("About as simple as it gets, folks")
Call Ax.Grid
Call Plt.Show
End Sub
3. Matplotlib を使うための VBA クラスとメソッド
現時点では一部のクラスとメソッドしか実装されていません. 詳しくは以下を参照してください.


