[英]Using matplotlib to make 3D plot
只是试图制作一个常数(0)的3D图。 所以我有
width = 1
dx = 0.1
X = np.arange(-width, width, dx)
Y = np.arange(-width, width, dx)
X, Y = np.meshgrid(X, Y)
Z = []
for i in range(len(X)):
Z.append(np.zeros(len(X[i])))
但是,当我尝试运行Axes3D.plot_wireframe(X,Y,Z)
我得到plot_wireframe() missing 1 required positional argument: 'Z'
。 我需要了解为什么会这样,因为Z
是应有的2D数组,并且在使用matplotlib进行3D绘图时找不到很多有用的示例。
要点是不能Axes3D.plot_wireframe(X,Y,Z)
运行Axes3D.plot_wireframe(X,Y,Z)
。 相反,您需要创建一个Axes3D实例并调用其方法[*]。 就像在2D情况下,您不会调用matplotlib.axes.Axes.plot(x,y)
而是ax.plot(x,y)
,其中ax是例如通过fig.add_subplot
创建的实例。
可以在此处找到线框图的示例。
以下代码(使用问题中的代码)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
width = 1
dx = 0.1
X = np.arange(-width, width, dx)
Y = np.arange(-width, width, dx)
X, Y = np.meshgrid(X, Y)
Z = []
for i in range(len(X)):
Z.append(np.zeros(len(X[i])))
ax.plot_wireframe(X, Y, Z)
plt.show()
积聚以下情节
plot_wireframe
,但随后需要向其提供实例,例如
Axes3D.plot_wireframe(ax, X, Y, Z)
我在网上找到了这个例子。 我已经将其粘贴到您的代码示例中,并且得到了以下代码+图:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
width = 1
dx = 0.1
X = np.arange(-width, width, dx)
Y = np.arange(-width, width, dx)
X, Y = np.meshgrid(X, Y)
Z = []
for i in range(len(X)):
Z.append(np.zeros(len(X[i])))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z)
plt.show()
希望这可以帮助! 我使用spyder IDE在python 3.5上运行了它。
干杯,戴夫
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.