如何在3D散点图上连接点?

时间:2016-06-08 20:01:02

标签: python matplotlib 3d

目前,我拥有所有这些坐标,所以很容易创建所有坐标组合的三维散点图。

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

我遇到了很多问题,试图将每个点与一条线连接到下一个点。如何将每个点与数组中的下一个点连接起来,以便它是一个平滑的折线图?

1 个答案:

答案 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)

enter image description here