【问题标题】:matplotlib 3D surface plotmatplotlib 3D 曲面图
【发布时间】:2019-03-04 01:13:34
【问题描述】:

尝试使用 jupyter notebook 创建平面的 3D 曲面图。但是,这段代码给了我一个奇怪的错误:

# ValueError: Argument Z must be 2-dimensional.

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

fig = plt.figure()
plt.clf()
ax = Axes3D(fig)

x=np.arange(-4,4,1)
y=np.arange(-4,4,1)

X = []
Y = []
Z = []

for ix in range(0, len(x)):
    for iy in range(0, len(y)):
        z = 2*x[ix] + 3*y[iy]
        Z.append(z)
        X.append(x[ix])
        Y.append(y[iy])

ax.plot_surface(X, Y, Z)

plt.show()

【问题讨论】:

  • 您遇到的错误是什么?你在哪里得到错误?请发布 Stacktrace 以及您遇到的问题的具体细节,以便我们更好地为您提供帮助。
  • 一点也不奇怪,你可以从字面上理解:Z 必须是一个二维数组。重新检查plot_surface example。在你的情况下X,Y = np.meshgrid(x,y); Z = 2*X+3*Y.

标签: python matplotlib jupyter


【解决方案1】:
%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)

def plot():
    fig = plt.figure()
    ax = Axes3D(fig)
    #ax = fig.gca(projection='3d')
    ax.plot_surface(X, Y, Z)
    plt.show()

Z = 2*X + 3*Y
plot()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2015-06-15
    • 2019-10-02
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多