2016-08-19 87 views
0

我的兩個地塊工作等高線圖:在頂部輪廓圖,且在底部contour plot與非線性X比例

等高線圖xy圖通過下面這行

plt.imshow(df, extent = [xmin, xmax, ymin, ymax]) 

而在x,y情節是

xyplot = df.mean() 
plt.plot(x, xyplot) 

而且應垂直對準頂部的等高線圖,但XY繪圖具有非線性X標尺。下圖顯示x軸作爲其索引的函數enter image description here

由於我無法向「imshow」方法的「extent」變量提供數組,因此我無法在輪廓中提供某個x比例情節。如何在等值線圖上製作一些非線性比例尺,以便兩個圖在垂直軸上對齊?

回答

1

您可以使用scipy.interpolate.interp2d在常規網格上內插圖像。下面是一個例子:

import numpy as np 
import pylab as pl 

x = np.linspace(0, 1, 100) 
x2 = x ** 2 
y = np.linspace(0, 1, 200) 

X, Y = np.meshgrid(x, y) 
X2, Y2 = np.meshgrid(x2, y) 
Z = np.sin(10 * (X**2 + Y**2)) 
Z2 = np.sin(10 * (X2**2 + Y2**2)) 

from scipy import interpolate 

i2d = interpolate.interp2d(x2, y, Z2) 
Zi = i2d(x, y) 

fig, axes = pl.subplots(1, 3, figsize=(12, 4)) 
extent = [0, 1, 0, 1] 
axes[0].imshow(Z, extent=extent) 
axes[1].imshow(Z2, extent=extent) 
axes[2].imshow(Zi, extent=extent) 

輸出:

enter image description here

左:陣列上規則網格進行計算。 center:數組不計算網格。 右側:在規則網格上插入中央數組的結果。