matplotlib 不等間隔データを描く

等間隔にデータがない場合(欠損値など)は、どうしても不等間隔でグラフを描く必要があります。

本記事では、matplotlibで不等間隔データを描く方法を紹介します。

具体的に

1D plot

2D plot (y軸が不等間隔)

というような図を描くということです。

なお、本記事では、データの読み込みはできていることを仮定して進めます。

1次元の図

ここでは、折れ線グラフを描きます。

matplotlib.pyplot.plotを使います。

import matplotlib.pyplot as plt
#xとdataを用意
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.plot(x,data)
ax.set_xticks(x[::5])
ax.grid()
plt.show()

ここで、xは、不等間隔データの位置データです。

また、描画する際、ticksで指定してあげることで不等間隔であることがより明瞭になります。

2次元の図

ここでは、カラーマップを描きます。maplotlibにおいて、カラーマップは、いろいろな関数が用意されていますが、

matplotlib.pyplot.pcolormeshを使います。

また、matplotlib.pyplot.imshowは、不等間隔データを描くことは出来ません。

import matplotlib.pyplot as plt
#xとyとdataを用意
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.pcolormesh(x,y,data)
fig.colorbar(im)
ax.set_xticks(x[::5])
ax.set_yticls(y[::5])
ax.grid()
plt.show()

ここで、xとyは、不等間隔データの位置データです。

位置データは1次元配列(リスト、ndarray)になります。

dataは2次元配列(リスト、ndarray)になります。

また、描画する際、xticks、yticksで指定してあげることで不等間隔であることがより明瞭になります。

まとめ

matplotlibで不等間隔を描く場合、

1次元図

関数(x,y)

x=位置データ(不等間隔)、y=データ

2次元図

関数(x,y,z)

x,y=位置データ(不等間隔)、z=データ

ただし、matplotlib.pyplot.imshowは使用不可。