Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

Issues with the legend of a plot with hidable lines.

2 vues (au cours des 30 derniers jours)
mec123
mec123 le 18 Août 2016
Clôturé : MATLAB Answer Bot le 20 Août 2021
Hi,
what i tried to do is the following test-code:
A=[10 20 30];
M=[1 2 3; 4 5 6; 7 8 9];
N=[11 12 13; 14 15 16; 17 18 19];
x=0 %testing with '1' and '0'
figure;
hold;
grid on;
title('Test');
xlabel('A');
ylabel('matrix');
for i = 1:3
p1 = plot(A, M,'--');
end
if x==1
else
for i = 1:3
p2 = plot(A, N);
end
end
legend([p1(1),p2(1)],'Lager M','Lager N','Location','NorthWest')
But when i use it in my script with the 3rd (and 4th) plot being disabled, it says "Undefined function or variable "pIrc"." (refering to the Legend-Line):
figure;
hold;
grid on;
for i = 1:length(data.stepsRotationalSpeed)
pIra = plot(data.stepsPreload, data.hertzIr_A(i,:));
end
for i = 1:length(data.stepsRotationalSpeed)
pIrb = plot(data.stepsPreload, data.hertzIr_B(i,:));
end
if (get(handles.popupmenuC,'Value') == 1)
else
for i = 1:length(data.stepsRotationalSpeed)
pIrc = plot(data.stepsPreload, data.hertzIr_C(i,:));
end
end
if (get(handles.popupmenuD,'Value') == 1)
else
for i = 1:length(data.stepsRotationalSpeed)
pIrd = plot(data.stepsPreload, data.hertzIr_D(i,:));
end
end
legend([pIra(1),pIrb(1),pIrc(1),pIrd(1)],'A','B','C','D','Location','NorthWest')
I really dont get it, there is no difference. Why can i leave p2 undeclared in the test script, but not in the other script?

Réponses (1)

Walter Roberson
Walter Roberson le 18 Août 2016
In your test script, x==1 is false so the else is executed, causing p2 to be defined.
If you later change x to be 1, do you also remember to clear p2 so that it becomes undefined?
  2 commentaires
mec123
mec123 le 19 Août 2016
No i dint clear it, so that might be the difference... But the behaviour of my original script is more likely anyways.
Is there a way to create a legend which is fitting for my concern without a complicated if-else structure?
Walter Roberson
Walter Roberson le 19 Août 2016
As each item is plotted, append its handle to a vector of handles, and append its legend entry to a cell array of strings. At the end, legend() those together.

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by