version (2.71 KB) by Adam Danz
Create a legend without duplicate entries or create 1 legend for multiple subplots.


Updated 13 Sep 2018

View License

When using the 'DisplayName' property when plotting (e.g: plot(x, y, 'DisplayName', 'Sofia')), legendUnq() will search for unique 'DisplayName' strings within a vector of figure or axis handles and removes duplicate values. This cleans up the legend when plotting in a loop or when the the same data appear more than once in a figure. This also makes it easy to use one legend across several subplots within a figure. Plot elements with an empty 'DisplayName' will not be included in the legend so you won't have any of those generic 'Data1' items.
unqHandles = legendUnq(h) searches all data in the figure or axis handle 'h' (h can also be a vector of axis handles) that has a 'DisplayName' string used by legend(). Duplicate DisplayName strings are removed. Call legend(unqHandles) to produce the legend showing unique components. If a plotted object does not have a DisplayName, it will not appear in the legend.
Common problems this solves:
1) Removes duplicates in a legend
2) Removes legend elements that weren't intended to be in the legend (i.e., that have empty 'DisplayName')
3) Makes it easy to have 1 legend that covers all subplots in a figure.

Cite As

Adam Danz (2022). legendUnq (https://www.mathworks.com/matlabcentral/fileexchange/67646-legendunq), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2018a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!