2017-03-16 65 views
0

我正在嘗試使用Axes3D模塊中的plot_wireframe來繪製線框。我的數據集:三個2D陣列:使用np.arange然後np.meshgrid創建兩個陣列。第三個是包含函數「f2」(f2 = f(x,y))的結果的數組。我預計3D繪圖,但結果是3D空間中的2D繪圖。現在我做了一些代碼,看起來像mpl文檔的一部分,但仍然不起作用。代碼:matplotlib 1.5中的線框無法正確繪圖

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 

def f2(x, y): 
    '''Return f(x, y) = exp(-(x * x + y * y)) * sin(-5. * (x * x + y * y))'''  
    return np.exp(-(x**2 + y**2)) * np.sin(-5.0 * (x**2 + y**2)) 


fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

x2 = np.arange(-1.5, 1.5, 0.02) 
y2 = np.arange(1.5, -1.5, -0.02) 

X, Y = np.meshgrid(x2, y2) 

z2 = f2(X, Y) 

ax.plot_wireframe(X, X, z2, rstride=10, cstride=10, linewidth=0.1, 
        label='$\exp(-(x^2 + y^2)){sin}(-5.0(x^2 + y^2)$') 

plt.show() 

這就是我想要的: Beautiful 3D plot 但現實是殘酷的: "A plot I've got"

我不知道我做錯了。這是矢量值問題嗎?

回答

0

變化

ax.plot_wireframe(X, X, z2, rstride=10, cstride=10, linewidth=0.1, 
       label='$\exp(-(x^2 + y^2)){sin}(-5.0(x^2 + y^2)$') 

ax.plot_wireframe(X, Y, z2, rstride=10, cstride=10, linewidth=0.1, 
       label='$\exp(-(x^2 + y^2)){sin}(-5.0(x^2 + y^2)$') 

您正在使用X代替Y作爲第二個參數來ax.plot_wireframe。因此,所有點落在對角線Y=X之上。