legend symbol disappears when plotting a polyshape

7 vues (au cours des 30 derniers jours)
Sim
Sim le 28 Juin 2024
Modifié(e) : Afiq Azaibi le 7 Oct 2024
If there is not any output from the legend, the symbol of the polyshape is visible:
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
legend(p);
Instead, if I try to get both outputs of the legend with a polyshape, the symbol of the polyshape disappears:
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
[h,objh]=legend(p);
How can I still see/visualise the symbol of the polyshape, when I need to get both outputs of the legend?
  5 commentaires
Sim
Sim le 16 Juil 2024
Modifié(e) : Sim le 16 Juil 2024
Hi @Adam Danz! Sorry for my late reply.... :-) I would need the second output to increase the marker/symbol size of other plots in the legend, as explained in How can I change the marker size in legend?. Something like this:
hold on
s=plot(rand(1,5),rand(1,5),'o','MarkerSize',8,'MarkerFaceColor','b');
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
[h,objh]=legend([p s]);
% increase the markers size
icons=findobj(objh,'Marker','o');
set(icons,'MarkerSize',15);
Adam Danz
Adam Danz le 17 Juil 2024
Thanks for share the use cases @Sim & @Star Strider.

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 28 Juin 2024
I don’t have any specific suggestions.
It works with one output, however not more than one. That the legend function has more than oue output is not documented, nor are the behaviours associated with the additional outputs. The second output (‘objh1’ here) can be used to change the marker properties, however without markers, there is nothing to change. (Experimenting with its properties didn’t bring back the patch in the legend.) Since the additional outputs are undocumented, you will likely need to Contact Support and ask about this. Also, ask for published documentation on the additional outputs be made freely available.
Include the URL of this thread in your note to MathWorks so you don’t have to repeat all this.
figure
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
h = legend(p);
get(h)
AutoUpdate: on BackgroundAlpha: 1 BeingDeleted: off Box: on BusyAction: 'queue' ButtonDownFcn: @bdowncb Children: [0x0 GraphicsPlaceholder] Color: [1 1 1] ContextMenu: [1x1 ContextMenu] CreateFcn: '' DeleteFcn: '' Direction: 'normal' DirectionMode: 'auto' EdgeColor: [0.1500 0.1500 0.1500] FontAngle: 'normal' FontName: 'Helvetica' FontSize: 9 FontWeight: 'normal' HandleVisibility: 'on' HitTest: on Interpreter: 'tex' Interruptible: off ItemHitFcn: @defaultItemHitCallback Layout: [0x0 matlab.ui.layout.LayoutOptions] LineWidth: 0.5000 Location: 'northeast' NumColumns: 1 NumColumnsMode: 'auto' Orientation: 'vertical' Parent: [1x1 Figure] PickableParts: 'visible' Position: [0.7327 0.8568 0.1529 0.0439] Selected: off SelectionHighlight: on String: {'data1'} Tag: 'legend' TextColor: [0 0 0] Title: [1x1 Text] Type: 'legend' Units: 'normalized' UserData: [] Visible: on
figure
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
[h,objh1,objh2]=legend(p);
get(h)
AutoUpdate: off BackgroundAlpha: 1 BeingDeleted: off Box: on BusyAction: 'queue' ButtonDownFcn: @bdowncb Children: [0x0 GraphicsPlaceholder] Color: [1 1 1] ContextMenu: [0x0 GraphicsPlaceholder] CreateFcn: '' DeleteFcn: '' Direction: 'normal' DirectionMode: 'auto' EdgeColor: [0.1500 0.1500 0.1500] FontAngle: 'normal' FontName: 'Helvetica' FontSize: 9 FontWeight: 'normal' HandleVisibility: 'on' HitTest: on Interpreter: 'tex' Interruptible: off ItemHitFcn: @defaultItemHitCallback Layout: [0x0 matlab.ui.layout.LayoutOptions] LineWidth: 0.5000 Location: 'northeast' NumColumns: 1 NumColumnsMode: 'auto' Orientation: 'vertical' Parent: [1x1 Figure] PickableParts: 'visible' Position: [0.7327 0.8568 0.1529 0.0439] Selected: off SelectionHighlight: on String: {'data1'} Tag: 'legend' TextColor: [0 0 0] Title: [1x1 Text] Type: 'legend' Units: 'normalized' UserData: [] Visible: on
get(objh1)
AffectAutoLimits: off BackgroundColor: 'none' BeingDeleted: off BusyAction: 'queue' ButtonDownFcn: '' Children: [0x0 GraphicsPlaceholder] Clipping: off Color: [0 0 0] ColorMode: 'manual' ContextMenu: [0x0 GraphicsPlaceholder] CreateFcn: '' DeleteFcn: '' EdgeColor: 'none' Editing: off Extent: [0.5467 0.1053 0.4091 0.7895] FontAngle: 'normal' FontName: 'Helvetica' FontSize: 9 FontSmoothing: on FontUnits: 'points' FontWeight: 'normal' HandleVisibility: 'on' HitTest: off HorizontalAlignment: 'left' Interactions: [] Interpreter: 'tex' Interruptible: off LineStyle: '-' LineWidth: 0.5000 Margin: 3 Parent: [1x1 Legend] PickableParts: 'visible' Position: [0.5467 0.5000 0] Rotation: 0 Selected: off SelectionHighlight: off SeriesIndex: 'none' String: 'data1' Tag: '' Type: 'text' Units: 'data' UserData: [] VerticalAlignment: 'middle' Visible: on
get(objh2)
AlignVertexCenters: off Annotation: [1x1 matlab.graphics.eventdata.Annotation] BeingDeleted: off BusyAction: 'queue' ButtonDownFcn: '' Children: [0x0 GraphicsPlaceholder] Clipping: on ContextMenu: [0x0 GraphicsPlaceholder] CreateFcn: '' DeleteFcn: '' DisplayName: 'data1' EdgeAlpha: 1 EdgeColor: [0 0 0] FaceAlpha: 0.3500 FaceColor: [0 0.4470 0.7410] FaceColorMode: 'auto' HandleVisibility: 'on' HitTest: on HoleEdgeAlpha: 1 HoleEdgeAlphaMode: 'auto' HoleEdgeColor: [0 0 0] HoleEdgeColorMode: 'auto' Interruptible: on LineJoin: 'round' LineStyle: '-' LineWidth: 0.5000 Parent: [1x1 Axes] PickableParts: 'visible' Selected: off SelectionHighlight: on SeriesIndex: 1 Shape: [1x1 polyshape] Tag: '' Type: 'polygon' UserData: [] Visible: on
.

Plus de réponses (1)

Afiq Azaibi
Afiq Azaibi le 4 Oct 2024
Modifié(e) : Afiq Azaibi le 7 Oct 2024
Using multiple outputs from the legend command is discouraged. You mentioned how you are trying to change the size of the icons which isn't currently supported but is one we are aware of. This might not be exactly what you are looking for but one way to change the size of the icon starting in R2024b, you can leverage the legend's IconColumnWidth property to adjust the width allocated to the icon of the legend.
p=plot(polyshape([0 0 1 1],[1 0 0 1]));
l=legend(p);
l.IconColumnWidth = 10;
In some cases when all the icons are markers, the value of IconColumnWidth will be adjusted to be narrow automatically but in all other cases, it will have its old default value which can still be adjusted.
scatter(rand(3,10), rand(3,10), 'filled');
l = legend;

Community Treasure Hunt

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

Start Hunting!

Translated by