Graphing an array so the largest row graphs first and then so forth

5 次查看(过去 30 天)
I have an x and y array, let's say the x-array is: (1,8,15,NaN,NaN; 1,8,15,22,29; 1,8,15,22,NaN), and the y-array is: (0,0,0,NaN,NaN; 0,0,0,2,2; 0,0,0,0,NaN). I would like to graph these two arrays so that the row vector with the longest length is graphed first, and then so on and so on. This is because when I am graphing these arrays right now, the first y-vector gets 'overwritten' by the next two y-vectors and I can't see the line at all. How do I fix this?
  1 个评论
Gabriel
Gabriel 2023-4-26
As you can see in this picture, the blue line for 'G5 FS6' is not shown because the yellow line is plotted after it.

请先登录,再进行评论。

采纳的回答

DGM
DGM 2023-4-26
编辑:DGM 2023-4-26
Maybe something like
x = [1,10,15,NaN,NaN; 1,10,15,20,25; 1,10,15,20,NaN];
y = [0,0,1,NaN,NaN; 0,0,0,0,3; 0,0,0,2,NaN];
% get index vector
[~,idx] = sort(sum(~isnan(x),2),'descend');
% plot
plot(x(idx,:).',y(idx,:).','linewidth',3)
But bear in mind that this just sorts by the number of non-NaN entries. It doesn't test to see where the non-NaN segments overlap

更多回答(1 个)

Matt J
Matt J 2023-4-26
编辑:Matt J 2023-4-26
IMHO, it's better just to assign distinct markers:
x=[1,8,15,NaN,NaN; 1,8,15,22,29; 1,8,15,22,NaN];
y=[0,0,0,NaN,NaN; 0,0,0,2,2; 0,0,0,0,NaN];
H=plot(x',y'); axis padded
[H.MarkerSize]=deal(6,10,14);
[H.Marker]=deal('x','s','o');

类别

Help CenterFile Exchange 中查找有关 Graph and Network Algorithms 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by