我正在尝试创建一条从xy平面中的(x,y)点开始并以(x,y,z)值结束的行。
这在matplotlib中是否可行?
这里我们有点(1,1,1)。所以基本上我想知道是否有可能将2D中的(1,1)线延伸到3D中的(1,1,1)。
希望我的问题能够清楚地理解这个例子。
答案 0 :(得分:0)
这没有任何意义。如果您在三维中工作,那么每个点都可以用三个维度来描述,包括您的起点。在三维空间中描述仅具有两个坐标的东西基本上描述了一条线;如果你只是明确地标记了x和y坐标,那么所有可能的z值都是有效的 - 所以你最终会得到一条线。
您要做的是使其中一个坐标(x,y或z)为零。
答案 1 :(得分:0)
这就是我所做的。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as cm
import numpy as np
fig = plt.figure(figsize=(1[![enter image description here][1]][1]5,10))
ax = fig.add_subplot(111, projection='3d')
# points
xs = np.asarray([np.cos(i) for i in np.arange(0,np.pi/2,(np.pi/2)/10)])
ys = np.arange(0,10,1)
zs = np.arange(0,10,1)
# plot points
ax.scatter(xs=xs, ys=ys, zs=zs, s=200, c=zs, cmap=cm.viridis_r, alpha=1.0)
# create the line
zs_l = np.asarray([[i, -1] for i in zs])
# color list
cl = [cm.get_cmap('viridis_r')(i/zs_l.shape[0]) for i in range(zs_l.shape[0])]
# draw the lines
for i, p in enumerate(zs_l):
ax.plot(xs=[xs[i]]*2, ys=[ys[i]]*2, zs=zs_l[i], markersize=0, lw=3, c=cl[i])