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

22 views (last 30 days)
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?

Accepted Answer

Walter Roberson
Walter Roberson on 26 Jan 2016
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.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!