[英]Python: interpolate matrix for figure
我有以下矩陣R:
R
array([[ 0.014985 , 0.01499475, 0.01508112, 0.01588764, 0.02019902, 0.03698812, 0.12376358],
[ 0.547997 , 0.00300703, 0.00306113, 0.00361317, 0.23311141, 0.41010791, 0.65683355],
[ 0.7739985 , 0.48050374, 0.00157832, 0.32448644, 0.61655571, 0.70505395, 0.82841677],
[ 0.9547997 , 0.89610075, 0.75911978, 0.86489729, 0.92331114, 0.94101079, 0.96568335],
[ 0.97739985, 0.94805037, 0.87955989, 0.93244864, 0.96165557, 0.9705054 , 0.98284168]])
這是一個5x7的矩陣,其中的行對應於:
tc = [100,500,1000,5000,10000]
而列如下:
y = [0,.00001, .0001, .001, .01, 0.1, 1]
如果將R
繪制為pcolor
圖像, pcolor
得到:
z_min, z_max = -np.abs(R).max(), np.abs(R).max()
fig,ax = plt.subplots(figsize=(10,7.5))
ax.pcolor(R,cmap='RdBu',vmin=z_min, vmax=z_max)
我想對矩陣進行插值以獲得更詳細的圖像:
xnew,ynew = np.mgrid[0:1:1000j,0:1000:1000j]
tck = interpolate.bisplrep(tc,y,R,s=0, kx=1, ky=1)
我收到以下錯誤:
TypeError: len(x)==len(y)==len(z) must hold.
我想知道一種在tc = [100,500,1000,5000,10000]
和y = [0,.00001, .0001, .001, .01, 0.1, 1]
tc = [100,500,1000,5000,10000]
y = [0,.00001, .0001, .001, .01, 0.1, 1]
tc = [100,500,1000,5000,10000]
的情況下正確插值矩陣R
的方法
從scipy.ndimage.interpolation使用縮放
您可以增加“縮放”,直到足夠好
from scipy.ndimage.interpolation import zoom
plt.pcolor(R,cmap='RdBu')
plt.show()
R2 = zoom(R,2)
plt.pcolor(R2,cmap='RdBu')
plt.show()
R5 = zoom(R,5)
plt.pcolor(R5,cmap='RdBu')
plt.show()
R10 = zoom(R,10)
plt.pcolor(R10,cmap='RdBu')
plt.show()
您還可以使用不同的插值方法,請參見函數的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.