我正在尝试使用SciPy的griddata插值,但它返回的大部分是NaN。图像的左下角有一个区域似乎插值确实起作用,但除此之外没有其他地方。我怀疑这可能是因为没有太多的x / y点可用于插值,但不确定。不幸的是,我无法在中间部分收集更多数据。我有什么办法可以完成插值并填写整个图表吗?谢谢!
import os
import numpy as np
import pandas
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
csv_path = os.path.dirname(os.path.abspath(__file__)) + '\\input.csv'
df = pandas.read_csv(csv_path)
x = list(df['X'])
y = list(df['Y'])
z = list(df['Z'])
xi = np.arange(min(x),max(x),1)
yi = np.arange(min(y),max(y),1)
xi,yi = np.meshgrid(xi,yi)
zi = griddata((x,y),z,(xi,yi),method='cubic')
print(xi,yi)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.contourf(xi,yi,zi,np.arange(0,1.01,0.01))
plt.plot(x,y,'k.')
plt.savefig('interpolated.png',dpi=100)
plt.close(fig)