目前,我拥有所有这些坐标,所以很容易创建所有坐标组合的三维散点图。
fig = plt.figure(figsize=(20,10))
ax = plt.axes(projection='3d')
z = numpy.transpose(z_coords_row)[0:100]
x = numpy.transpose(x_coords_row)[0:100]
y = numpy.transpose(y_coords_row)[0:100]
plt.xticks(numpy.arange(-1.5, 1.5, .25))
plt.yticks(numpy.arange(-1.5, 1.5, .5))
ax.scatter(x, y, z,s=1)
ax.view_init(elev=10., azim=45)
此代码的结果如下:http://i.stack.imgur.com/KKw1D.png
我遇到了很多问题,试图将每个点与一条线连接到下一个点。如何将每个点与数组中的下一个点连接起来,以便它是一个平滑的折线图?
答案 0 :(得分:3)
如果您只使用坐标有足够的分数,我认为您要找的是plot3D
。如果您需要更平滑的线条,可能值得查看scipy.interpolate.RegularGridInterpolator
,这有助于生成更多的点,然后您可以将其插入plot3D
。
plot3D
的使用示例:
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(20,10))
ax = plt.axes(projection='3d')
z_coords_row = numpy.sin(numpy.linspace(0,2*numpy.pi,100))+5
x_coords_row = numpy.sin(numpy.linspace(0,2*numpy.pi,100))
y_coords_row = numpy.cos(numpy.linspace(0,2*numpy.pi,100))
z = numpy.transpose(z_coords_row)[0:100]
x = numpy.transpose(x_coords_row)[0:100]
y = numpy.transpose(y_coords_row)[0:100]
plt.xticks(numpy.arange(-1.5, 1.5, .25))
plt.yticks(numpy.arange(-1.5, 1.5, .5))
ax.scatter(x, y, z,s=5)
ax.plot3D(x,y,z)
ax.view_init(elev=10., azim=45)