python mathplotlib: 3D plots error: "ValueError: Argument Z must be 2-dimensional."
python mathplotlib: 3D plots error: "ValueError: Argument Z must be 2-dimensional."
我是编码新手,但我想知道为什么这段代码不起作用。我收到错误:“ValueError:参数 Z 必须是二维的。”
有人可以帮助解决我的问题吗?
谢谢
S.B.
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d
ax = plt.axes(projection= '3d')
def z_function(x,y):
return m/(4*np.pi*r**3)*(3*m*r**2-m)
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100)
r = x**2+y**2
m = 10
X, Y = np.meshgrid(x,y)
Z = z_function(X,Y)
ax.plot_surface(X,Y,Z)
plt.show()
您的代码失败的原因是您将 r 作为 1-D 数组生成。
要将其生成为 2-D 数组,运行:
r = x**2 + y[:, np.newaxis]**2
您的其余代码没问题。
还要考虑这样的细节:您的 z_function 既不使用 x 也不使用 y.
为什么包含这些参数?
我是编码新手,但我想知道为什么这段代码不起作用。我收到错误:“ValueError:参数 Z 必须是二维的。”
有人可以帮助解决我的问题吗? 谢谢 S.B.
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d
ax = plt.axes(projection= '3d')
def z_function(x,y):
return m/(4*np.pi*r**3)*(3*m*r**2-m)
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100)
r = x**2+y**2
m = 10
X, Y = np.meshgrid(x,y)
Z = z_function(X,Y)
ax.plot_surface(X,Y,Z)
plt.show()
您的代码失败的原因是您将 r 作为 1-D 数组生成。
要将其生成为 2-D 数组,运行:
r = x**2 + y[:, np.newaxis]**2
您的其余代码没问题。
还要考虑这样的细节:您的 z_function 既不使用 x 也不使用 y. 为什么包含这些参数?