Obtain short lines in a legend in a subplot
Show older comments
I am using the code below to generate the plot below. I want to shorten the blue and orange marker lines in the legend. I cannot get the 'Children' of the legend, since this is a '0×0 empty GraphicsPlaceholder array'. I couldn't find a solution that works in my code. Thanks in advance 😊
%%Clear and import properties
clear
close all
%% Plot size
f=figure(1);
width = 18;
height = 9;
set(gcf, 'Units', 'centimeters')
set(gcf, 'Position', [-30 8 width height])
set(gcf, 'PaperPositionMode', 'auto')
%Relative positions
%Horizontal
a_h=0.05;
c_h=0.05;
e_h=c_h;
g_h=0.01;
rest=(1-a_h-c_h-e_h-g_h);
b_h=rest/3;
d_h=rest/3;
f_h=rest/3;
%Vertical
a_v=0.1;
c_v=0.13;
e_v=0.02;
rest=(1-a_v-c_v-e_v);
b_v=0.4*rest;
d_v=0.6*rest;
%% Actual plot
%ax(2)=subplot(3,2,2);
%ax(3)=subplot(3,2,3);
ax(1)=subplot(2,3,[1 3]);
pos=get(ax(1),'Position'); %hpos vpos width height
pos(1)=a_h;%horizontal position
pos(2)=a_v+b_v+c_v;%vertical position
pos(3)=1-a_h-g_h;%width
pos(4)=d_v;%height
set(ax(1), 'Position', pos);
ax(2)=subplot(2,3,4);
pos=get(ax(2),'Position'); %hpos vpos width height
pos(1)=a_h;%horizontal position
pos(2)=a_v;%vertical position
pos(3)=b_h;%width
pos(4)=b_v;%height
set(ax(2), 'Position', pos);
ax(3)=subplot(2,3,5);
pos=get(ax(2),'Position'); %hpos vpos width height
pos(1)=a_h+b_h+c_h;%horizontal position
pos(2)=a_v;%vertical position
pos(3)=b_h;%width
pos(4)=b_v;%height
set(ax(3), 'Position', pos);
ax(4)=subplot(2,3,6);
pos=get(ax(2),'Position'); %hpos vpos width height
pos(1)=a_h+b_h+c_h+d_h+e_h;%horizontal position
pos(2)=a_v;%vertical position
pos(3)=b_h;%width
pos(4)=b_v;%height
set(ax(4), 'Position', pos);
axes(ax(1))
plot(linspace(-10,10,100),-linspace(-10,10,100).^2)
axes(ax(2))
plot(linspace(-10,10,100),-linspace(-10,10,100).^2)
hold on
plot(linspace(-10,10,100),+linspace(-10,10,100).^2)
legh=legend(["1^{st} Measurement", "2^{nd} Measurement"]);
set(legh,'Position',[0.235 0.44 0.01 0.01],'Orientation','horizontal')
axes(ax(3))
plot(linspace(-3,3,100),-linspace(-3,3,100).^3)
hold on
plot(linspace(-3,3,100),+linspace(-3,3,100).^3)
axes(ax(4))
plot(linspace(-10,10,100),-linspace(-10,10,100))
hold on
plot(linspace(-10,10,100),+linspace(-10,10,100))

1 Comment
dpb
on 14 Dec 2021
Don't think you'll be able to do anything to the line drawn by legend -- TMW has pretty-well locked down the properties inside it so you can't do much munging on them anymore. The underlying axes of the legend object is now opaque to the point of being almost black; you can't get access to the line handles that make up the displayed lines.
I think it's accept the line style associated with the line handle or you'll have to create a custom pseudo-legend object of your own.
Accepted Answer
More Answers (0)
Categories
Find more on Graphics Object Properties in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!