Drawing colored line segments in a 3d plot

16 views (last 30 days)
I have code that produces quite nice looking 3d graphs showing line segments.
Currently, i can make the points at the end of each line segment match each other- but i can't work out how to make the line segment match the points at its ends.
A = rand(6,50);
%create 3d points to be graphed
startv = [A(:,1),A(:,3),zeros(length(A),1)];
endv = [A(:,2),A(:,5),A(:,4)];
%I want to use the vector endv to determine the colour of the lines/points
%to make the graph clearer; so i am going to create a color vector by
%transforming it
colorv=endv./max(endv)
figure;hold on
scatter3(startv(:,1),startv(:,2),startv(:,3),10,colorv,'filled');
scatter3(endv(:,1),endv(:,2),endv(:,3),10,colorv,'filled');
h = plot3([startv(:,1)';endv(:,1)'],...
[startv(:,2)';endv(:,2)'],...
[startv(:,3)';endv(:,3)'])
set(h,'color',[128,0,128]./255);
this graph illustrates the above; in this case some data is being displayed (and this means one variable is always close to 100), but i think it would be easier to understand if the lines were the same colour as their ends

Accepted Answer

Image Analyst
Image Analyst on 13 Jul 2020
If you call plot3 in a loop, you can plot one line at a time with colorv. Something like (untested)
for k = 1 : size(startv, 1)
plot3([startv(k,1)';endv(k,1)'],...
[startv(k,2)';endv(k,2)'],...
[startv(k,3)';endv(k,3)'], '.-',...
'LineWidth', 2, 'Color', colorv(k,:), 'MarkerSize', 30);
end

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Products


Release

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!