How do I use only one legend entry for sets of xlines?
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Matthew
el 14 de Mayo de 2024
Comentada: Voss
el 14 de Mayo de 2024
I am currently trying to create a plot with two sets of xlines, with one set colored red and the other colored green. For some reason, when I plot them, the legend entry shows that both lines are identified as green. I'm not sure how to go about fixing this issue, so any help would be greatly appreciated! Attached is the code I'm using as well as an image with the problem.
for trialNumber = 1:length(filenameDataAC)
legendNames = {"Accelerometers","Motion Capture","Upper Threshold (UT)","Lower Threshold (LT)","Stim On","Stim Off"};
fig = figure('Name', dataStoreACFTrunc{trialNumber,1});
% Pitch (NNP+VIC)
subplot(3,1,1)
plot(dataStoreACFTrunc{trialNumber,2}.time, dataStoreACFTrunc{trialNumber,2}.Pitch)
hold on
plot(intDataStoreVICFTrunc{trialNumber,2}.time, intDataStoreVICFTrunc{trialNumber,2}.Pitch)
set(gca, 'FontSize', 16, 'FontWeight', 'bold')
xlabel('Time (s)', 'FontSize', 18)
ylabel('Pitch Angle (deg)', 'FontSize', 18)
yline(pUTs(trialNumber),'-','UT','LabelHorizontalAlignment','left')
yline(pLTs(trialNumber),'-','LT','LabelHorizontalAlignment','left')
x1 = xline(dataStoreACFTrunc{trialNumber,2}.time(stimOn{trialNumber}),'--','Color','g');
x2 = xline(dataStoreACFTrunc{trialNumber,2}.time(stimOff{trialNumber}),'--','Color','r');
ylim([-60,60])
yticks([-60,-30,0,30,60])
xlim([0 dataStoreACFTrunc{trialNumber,2}.time(end)])
legend(legendNames)
% Roll (NNP+VIC)
subplot(3,1,2)
plot(dataStoreACFTrunc{trialNumber,2}.time, dataStoreACFTrunc{trialNumber,2}.Roll)
hold on
plot(intDataStoreVICFTrunc{trialNumber,2}.time, intDataStoreVICFTrunc{trialNumber,2}.Roll)
set(gca, 'FontSize', 16, 'FontWeight', 'bold')
xlabel('Time (s)', 'FontSize', 18)
ylabel('Roll Angle (deg)', 'FontSize', 18)
yline(rUTs(trialNumber),'-','UT','LabelHorizontalAlignment','left')
yline(rLTs(trialNumber),'-','LT','LabelHorizontalAlignment','left')
xline(dataStoreACFTrunc{trialNumber,2}.time(stimOn{trialNumber}),'--','Color','g')
xline(dataStoreACFTrunc{trialNumber,2}.time(stimOff{trialNumber}),'--','Color','r')
ylim([-60,60])
yticks([-60,-30,0,30,60])
xlim([0 dataStoreACFTrunc{trialNumber,2}.time(end)])
% Controller Stim State
subplot(3,1,3)
plot(dataStoreACFTrunc{trialNumber,2}.time, dataStoreACFTrunc{trialNumber,2}.StimState)
set(gca, 'FontSize', 16, 'FontWeight', 'bold')
xlabel('Time (s)', 'FontSize', 18)
ylabel('Stim State', 'FontSize', 18)
xline(dataStoreACFTrunc{trialNumber,2}.time(stimOn{trialNumber}),'--','Color','g')
xline(dataStoreACFTrunc{trialNumber,2}.time(stimOff{trialNumber}),'--','Color','r')
ylim([0,5])
xlim([0 dataStoreACFTrunc{trialNumber,2}.time(end)])
sgtitle('Return to Upright Controller Outputs', 'FontSize', 32, 'FontWeight', 'bold')
% saveas(fig, dataStoreAC{trialNumber,1},'fig')
% figsPath = dir(fullfile(currentPath,'*.fig'));
% movefile(fullfile(figsPath.folder,figsPath.name),saveFigPath);
end
Thank you!
0 comentarios
Respuesta aceptada
Voss
el 14 de Mayo de 2024
One way is to explicitly state which line objects to put in the legend, in the call to legend. For example:
subplot(3,1,1)
h1 = plot(dataStoreACFTrunc{trialNumber,2}.time, dataStoreACFTrunc{trialNumber,2}.Pitch);
hold on
h2 = plot(intDataStoreVICFTrunc{trialNumber,2}.time, intDataStoreVICFTrunc{trialNumber,2}.Pitch);
set(gca, 'FontSize', 16, 'FontWeight', 'bold')
xlabel('Time (s)', 'FontSize', 18)
ylabel('Pitch Angle (deg)', 'FontSize', 18)
y1 = yline(pUTs(trialNumber),'-','UT','LabelHorizontalAlignment','left');
y2 = yline(pLTs(trialNumber),'-','LT','LabelHorizontalAlignment','left');
x1 = xline(dataStoreACFTrunc{trialNumber,2}.time(stimOn{trialNumber}),'--','Color','g');
x2 = xline(dataStoreACFTrunc{trialNumber,2}.time(stimOff{trialNumber}),'--','Color','r');
ylim([-60,60])
yticks([-60,-30,0,30,60])
xlim([0 dataStoreACFTrunc{trialNumber,2}.time(end)])
legend([h1(1),h2(1),y1(1),y2(1),x1(1),x2(1)],legendNames)
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Legend en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!