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

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');

カテゴリ

ヘルプ センター および File ExchangeDiscrete Data Plots についてさらに検索

質問済み:

2023 年 4 月 26 日

コメント済み:

2023 年 4 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by