2017-06-09 20 views
0

私は3D表面プロットを作成しようとしていますが、結果は原点に整列されていません。 enter image description herematplotlibのセンターplot_surface

あなたは簡単にそれが上の少しオフだZ-投影で見ることができますX軸とY軸。

fig = plt.figure(figsize=(30, 15)) 
ax = fig.add_subplot(121, projection='3d') 
ax.set_xlim3d(-0.5, 1) 
ax.set_ylim3d(0, 1.5) 
ax.set_zlim3d(-1.5, 1) 
Q = ndi.gaussian_filter(Q, sigma=10) 
ax.plot_surface(X, Y, Q, cmap=cm.coolwarm, lw=lw, rstride=rs, cstride=cs, alpha=a, antialiased=True) 
ax.contourf(X, Y, Q, zdir='z', offset=-1.5, cmap=cm.coolwarm) 
ax.contourf(X, Y, Q, zdir='x', offset=-0.5, cmap=cm.coolwarm) 
ax.contourf(X, Y, Q, zdir='y', offset=+1.5, cmap=cm.coolwarm) 

私の質問:コードをプロット

bins = np.linspace(0, 1, 1000) 
indices = np.digitize(data[:, :2], bins, right=True) 
X, Y = np.meshgrid(bins, bins, indexing='ij') 
Q = np.zeros_like(X) 
C = np.zeros_like(X) 
d = data[:, 2] 
for idx in range(0, len(indices)): 
    (i,j) = indices[idx] 
    Q[i, j] += d[idx] 
    C[i, j] += 1 
C[C == 0] = 1 # avoid division by zero errors 
Q /= C 
return (X, Y, Q, C) 

:私のデータは、私は値を計算する方法これは最初の2つのカラムが私のXさんとYさんで、3列目は私のZである行列であります表面が原点に揃っていることを確認するための計算が不足していますか?ありがとう。

答えて

1

表面は、起点に合わせてである。しかし、その起源は「空気中にぶら下がっている」。つまり、下のペインはcontourfプロットのわずかに(〜0.05単位)下にあり、と表示されます。は、プロットの位置がずれているように見えます。

Removing axes margins in 3D plot 2つの答えのうちの1つを使用して、ペインが正しく整列されるようにします。