計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

matplotlibでスプライン補間

目次

必要なもの

  • python
  • scipy
  • numpy
  • matplotlib

scipyとかはanacondaのcondaコマンドでインストールするといい。

適当なグラフを用意

適当にデータを用意する。普通に線でつなぐと当然直線になる。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y = [2, 5, 7, 10, 12, 7, 2]
plt.xlim([0, 8])
plt.ylim([0, 14])
plt.plot(x, y, '-o')

f:id:keisanbutsuriya:20151224172252p:plain

3次スプライン補間

線の補間をする場合、scipyのinterpolateのinterp1dを使う。数行書けばいいだけなので簡単

Interpolation (scipy.interpolate) — SciPy v0.16.1 Reference Guide

import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import interp1d

x = [1, 2, 3, 4, 5, 6, 7]
y = [2, 5, 7, 10, 12, 7, 2]

f = interp1d(x, y, kind='cubic')    # 3次スプライン補間
xnew = np.linspace(1, 7, num=51)    # 関数fに使うxを生成

plt.xlim([0, 8])
plt.ylim([0, 14])
plt.plot(x, y, 'o')
plt.plot(xnew, f(xnew), '-')    # f(x)みたいな形で使える

f:id:keisanbutsuriya:20151224172735p:plain