Multiplot Legend Item remains after line visible property put to "off"
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, on a previous post I was kindly showed how to "disable a plot" on a set of plots. What I actually want to do is temporarily remove it and Steven Lord suggested using the "visible" parameter
So I use a checkbox to allow me to toggle on or off the last line plotted:
val = app.VisibleOFFlastplotCheckBox.Value;
ax=app.UIAxes;
t = ax.Children(1); % Get last plot
switch val
case 1
t.Visible='off';
case 0
t.Visible='on';
end
Whilst this works, it doesn't seem to remove the legend item, but instead Greys it out.
So to show this, the purple curve below is the one I want to remove / hide (note if remove it, I want the possibility of adding it back which is why Steven suggested the "visible" approach)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1717581/image.png)
And here's what happens once I set the visible property of the line to "off" - notice the legen item is still present
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1717586/image.png)
So how can I hide / temporarily remove the last legend item?
Thanks
Jason
1 Kommentar
Aquatris
am 18 Jun. 2024
By any chance does 't' has 'HandleVisibility' property? if so try to set that to off.
Akzeptierte Antwort
Jaynik
am 18 Jun. 2024
Hi Jason,
Instead of just using the Visible property, you can set the IconDisplayStyle property of the Annotation object to 'off'. Here is how you can adjust the code accordingly:
switch val
case 0
t.Visible = 'off';
t.Annotation.LegendInformation.IconDisplayStyle = 'off';
case 1
t.Visible = 'on';
t.Annotation.LegendInformation.IconDisplayStyle = 'on';
end
Weitere Antworten (1)
Ayush Modi
am 18 Jun. 2024
Bearbeitet: Ayush Modi
am 18 Jun. 2024
Hi Jason,
From the previous post, I understand you are using the 'DisplayName' property in the plot function and passing the plot handles in the legend function.
f1 = figure;
a = plot(2:10,3:11, 'DisplayName','legend1');
% Current legend statement - passing plot handles
legend(a);
a.HandleVisibility = "off";
a.Visible = 'off';
As depicted, 'HandleVisibility' property doesn't hide the legend line in this implementation. As a workaround, you can enable legends visibility using 'show' parameter. Here is the example code for your reference:
f2 = figure;
b = plot(2:10,3:11, 'DisplayName','legend2');
% Setting the legend property to show.
legend show;
b.HandleVisibility = "off";
b.Visible = 'off';
Hope this helps!
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!