import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import random
def fun(x, y):
return x + y
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
n = 10
xs = [i for i in range(n) for _ in range(n)]
ys = list(range(n)) * n
zs = [fun(x, y) for x,y in zip(xs,ys)]
ax.scatter(xs, ys, zs)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
对于曲面,它有点不同,你在2d数组中传入一个域的网格。下面是一个光滑曲面示例:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import random
def fun(x, y):
return x**2 + y
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array([fun(x,y) for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
1条答案
按热度按时间mu0hgdu01#
打印样式取决于您的数据:您正在尝试绘制三维曲线(直线)、曲面或点的散点?
在下面的第一个例子中,我只是使用了一个简单的网格,这些网格由x-y平面上的均匀间隔的点组成。通常,首先创建一个xs和ys的域,然后从中计算zs。
这段代码应该给予你一个可以开始玩的工作示例:
对于曲面,它有点不同,你在2d数组中传入一个域的网格。下面是一个光滑曲面示例:
更多示例,请查看文档中的mplot3d tutorial。