How to edit my scatter plot legend?

40 ビュー (過去 30 日間)
Azra Zainurin
Azra Zainurin 2016 年 4 月 18 日
コメント済み: dpb 2016 年 4 月 23 日
Hi,
I have a problem putting legend on my scatter plot.
I have used legend('Intact','Damage 1','Damage 2','Damage 3');
However, I want 'b*' to be my Intact, 'go' to be my Damage 1, 'k^' to be my Damage 2, and lastly 'rs' to be my Damage 3.
How do I change this?
Please see attached to have better understanding.
I hope I make sense. I really need help with this one
THANK YOU IN ADVANCE!!
Regards, Azra
  2 件のコメント
Kuifeng
Kuifeng 2016 年 4 月 18 日
for example, b*, your intact got 21 points, 1:5 is a 5 element vector. how would you like to plot 21 y values with 5 x values?
%similarly. other three groups
dpb
dpb 2016 年 4 月 23 日
From doc for plot "If one of Yn or Xn is a matrix and the other is a vector, it [i.e., PLOT] plots the vector versus the matrix row or column with a matching dimension to the vector." OP has his Y data in an array which in Matlab must be rectangular so there cannot be 21 points in the first array but an (indeterminate) number that is a multiple of 5 (the length of X vector). Since as you point out, there are 21 distinct points that N must be a minimum of 5; there could be more. It appears the data were collected with only two decimal digits of precision so either() there are NaN placeholders for missing values which *plot ignores silently or the other values are duplicated to other points in which case they're indistinguishable being overlaid identically.
Hence, there are N line objects for each array; these will be numbered sequentially and as noted above legend will associated text labels on a one-to-one basis with the first M lines if specific line handles are not provided for a differing association.
(*) Discounting the possibility there are other values outside the given plot limits that are thereby clipped from view...

サインインしてコメントする。

採用された回答

dpb
dpb 2016 年 4 月 18 日
編集済み: dpb 2016 年 4 月 19 日
Need to save the line handles from plot and select one from each group. Each group (column) of points in the plot is a separate line for each group of Y values (one for each X in that dimension of the array) and by default legend begins with the first line and uses the labels given in sequence. Hence, internally the labels as shown in your plot are associated with the first four lines (which are all in the first group/array), not the groups even though there are only four Y arrays. When you don't draw a line between points it's easy to forget the orientation of the lines as plot defines them; to see it, set the line style property on a couple of them and see how the points are then connected.
Since you didn't provide the code in an editable way I'll use an artificial demo instead of trying to type yours in by hand...
>> hL=plot(1:3,rand(4,3),'b*',4:6,rand(4,3),'g^'); % two groups of four, similarly; line save handles
>> xlim([0 7]) % clean up limits for viewing
>> legend(hL(1:4:end),'A','B')
>>
Select the first line of the two groups of lines; the 4 is number of rows in each group. In the example above I used 3x4 whereas your figure uses 5xN instead; if that were to vary would have to make the selection appropriately for each X grouping.
plot associates the size of the Y array with the appropriate length of the X vector so there are four lines in my case each of length 3.
As noted above, try
set(hL(1),'linestyle','-')
to see a particular line and which will make why the above on the legends works to get the desired correlation of line marker to the label works easier to see.
  2 件のコメント
Azra Zainurin
Azra Zainurin 2016 年 4 月 20 日
Oh my it works!
Thank you very much for your help.
I apologise for my late reply
Regards, Azra
dpb
dpb 2016 年 4 月 20 日
No problem, glad to be able to help... :) Thanks for letting know did actually help; makes it much more pleasant to know the effort isn't wasted.

サインインしてコメントする。

その他の回答 (1 件)

Kuifeng
Kuifeng 2016 年 4 月 18 日
plot(linspace(1,5,21), Intact..., 'b*',linspace(6,10,21), D1b..., 'go',...
linspace(11,15,21), D2b..., 'k^',linspace(16,20,21), D3b..., 'rs'). %note, may not be 21 elements.
legend...

カテゴリ

Help Center および File ExchangeLegend についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by