문제

시간이 지남에 따라 진화하는 3D 라인 궤도를 줄이려고 시도하고 색상이 시간의 흐름을 보여주기 위해 색상을 바꾸고 있기를 바랍니다 (예 : 밝은 파란색에서 어두운 파란색으로).그러나 MATPLOTLIB의 Line3DCollection를 사용하기위한 자습서가 뚜렷한 부족이 있습니다. 이것은 내가 찾을 수있는 가장 가까운 이지만, 내가 얻는 것은 모두입니다.흰색 선.

여기에 내 코드가 있습니다.

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

# X has shape (3, n)
c = np.linspace(0, 1., num = X.shape[1])[::-1]
a = np.ones(shape = c.shape[0])
r = zip(a, c, c, a) # an attempt to make red vary from light to dark

# r, which contains n tuples of the form (r,g,b,a), looks something like this:
# [(1.0, 1.0, 1.0, 1.0), 
# (1.0, 0.99998283232330165, 0.99998283232330165, 1.0),
# (1.0, 0.9999656646466033, 0.9999656646466033, 1.0),
# (1.0, 0.99994849696990495, 0.99994849696990495, 1.0),
# ..., 
# (1.0, 1.7167676698312416e-05, 1.7167676698312416e-05, 1.0),
# (1.0, 0.0, 0.0, 1.0)]

fig = plot.figure()
ax = fig.gca(projection = '3d')

points = np.array([X[0], X[1], X[2]]).T.reshape(-1, 1, 3)
segs = np.concatenate([points[:-1], points[1:]], axis = 1)
lc = Line3DCollection(segs, colors = r)
ax.add_collection3d(lc)

ax.set_xlim(-0.45, 0.45)
ax.set_ylim(-0.4, 0.5)
ax.set_zlim(-0.45, 0.45)

plot.show()
.

여기에 내가 얻는 것입니다 :

3D 시간 색상 변경 플롯

화이트 선분의 무리, 색상의 변화가 없습니다.내가 도대체 뭘 잘못하고있는 겁니까?감사합니다!

도움이 되었습니까?

해결책

코드가 잘 작동합니다. 여기에는 샘플이 약간 있습니다.기본적으로 이것은 사용자 정의 x 세트가있는 코드입니다.

fig = plot.figure();
ax = fig.gca(projection = '3d')
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)
ax.add_collection(Line3DCollection(segs,colors=list(r)))

plot.show()
.

과 플롯은 다음과 같습니다.

여기에 이미지 설명

다른 팁

와우, 그래서 문제가 실제로 모양의 X와 같은 것이 아니라, 나는 (3, n) 포인트를 플로팅 한 것만으로 만 표시되지 않았으므로,왜 (3, n^10)가 매우 작은 간격을 가진 것인가? 내가 250만을 플로팅 할 때 58,000 점이있었습니다.

그래서 그렇습니다. 버그였습니다.미안합니다;지금 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top