首页 > 解决方案 > Matplotlib:3D 线集合绘制在任何其他绘图之上

问题描述

我想绘制多条线(很多次),所以我真的需要使用 Line Collection 来提高效率......但是我注意到默认情况下“zorder”是这样的,这些线是图中最后要绘制的东西。所以,我没有设法在线条上方绘制一个点......下面你会找到一个最小的例子:我试图定义“zorder”,但这似乎不起作用......

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Line3DCollection
import numpy as np

fig = plt.figure(figsize=(15,15))
ax  = fig.add_subplot(111, projection='3d',facecolor='w')
X = [(0,0,0,1,0),(0,0,1,0,0),(0,1,0,0,0)]
points = np.array([X[0], X[1], X[2]]).T.reshape(-1, 1, 3)
r = [(1.0, 1.0, 1.0, 1.0), (1.0, 0.75, 0.75, 1.0), (1.0, 0.5, 0.5, 1.0), (1.0, 0.25, 0.25, 1.0), (1.0, 0.0, 0.0, 1.0)];

segs = np.concatenate([points[:-1], points[1:]], axis = 1)
lc =Line3DCollection(segs,colors=list(r),linewidth=4)
ax.add_collection(lc)
ax.scatter(1,0,0,s=84)

plt.show()

这是我得到的结果:

结果

知道如何解决这个问题吗?

标签: pythonmatplotlib

解决方案


推荐阅读