Force a legend entry even if there are no matching elements in the plot

Hi,
I'm generating a plot based on a condition as follows:
d1 = plot(find(Vec == 1), Y(Vec == 1), 'r*', 'DisplayName', 'Data 1');
hold on;
d2 = plot(find(Vec == 2), Y(Vec == 2), 'b*', 'DisplayName', 'Data 2');
d3 = plot(find(Vec== 3), Y(Vec == 3), 'k*', 'DisplayName', 'Data 3');
legend([d1 d2 d3]);
Sometimes the array 'Vec' does not have entries matching the value 3. So there are no points generated with a black marker (k*) and the legend will not show 'Data 3'.
But I still want to force the legend entry to display that the Black points(if any) associate with DisplayName 'Data 3'. How do I achieve this?

 Risposta accettata

d1 = plot([find(Vec == 1),nan], [Y(Vec == 1),nan], 'r*', 'DisplayName', 'Data 1');
hold on;
d2 = plot([find(Vec == 2),nan], [Y(Vec == 2),nan], 'b*', 'DisplayName', 'Data 2');
d3 = plot([find(Vec== 3),nan], [Y(Vec == 3),nan], 'k*', 'DisplayName', 'Data 3');
This ensures that every selection has at least a nan in the coordiantes rather than being empty. Nothing will be displayed for the nan (this is well defined in the graphics system and relied upon in multiple routines, not something that is going to change any year soon.) But the legend will be displayed because the line exists.

Più risposte (0)

Prodotti

Richiesto:

Osh
il 26 Gen 2016

Commentato:

Osh
il 26 Gen 2016

Community Treasure Hunt

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

Start Hunting!

Translated by