在不使用scipy.interpolate.griddata的情况下插入pyplot中的NaN值

时间:2014-05-26 16:29:26

标签: python numpy matplotlib scipy interpolation

我想知道如何在不插入数据本身的情况下插入plt.contourf图。问题是因为我尝试scipy.interpolate.griddata时花了很多时间,因为我的数据太长了。

我想知道是否有办法通过pyplot或更快的速度来绘制带有NaNs的数据而没有这些空白。

例如:

如果我有:

import numpy as np.
from numpy import nan
import matplotlib.pyplot as plt

a = np.array([[  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.],
              [  9.,   3.,   2.,   5.,   9.,   3.,   2.,   5.],
              [  3.,  nan,   5.,   1.,   3.,  nan,   5.,   1.],
              [  5.,   8.,   2.,   9.,   5.,   8.,   2.,   9.]])

xa = np.arange(8)+2

ya = -np.arange(12)

plt.figure()
plt.contourf(xa,ya,a,100)
plt.show()

我会:

enter image description here

我想更容易,更快地插入这些空白......

1 个答案:

答案 0 :(得分:2)

Pandas有一个很棒的插值界面,您可以这样做:

import pandas as pd

a_interp = pd.DataFrame(a).interpolate(method='linear', axis=0).values
plt.contourf(xa, ya, a_interp, 100)
plt.show()

enter image description here