2016-06-20 12 views
6

Ich habe zwei Datensätze, die ich in der gleichen Abbildung, z. zwei Cosinus- und zwei Sinus Plots, die nur in der Amplitude unterscheiden:Linienstränge in MATLAB-Legende zusammenfügen

x = -pi:pi/20:pi; 
hold all; 
amplitude = 1; 
plot(x,amplitude*cos(x),'-'); 
plot(x,amplitude*sin(x),'-'); 

ax = gca; 
ax.ColorOrderIndex = 1; 

amplitude=3; 
plot(x,amplitude*cos(x),'.'); 
plot(x,amplitude*sin(x),'.'); 

legend('1*cos(x)','1*sin(x)', '2*cos(x)','2*sin(x)'); 
hold off; 

current

Ich will die Legende zu „komprimieren“, so dass der beiden Leitungs Stiles (normale Linie und gepunktete Linie) ist „verschmolzen“ und erscheint neben den gleichen Texteintrag in der Legende, wie zum Beispiel:

desired

wie kann ich erreichen dies in MATLAB? Ich verwende derzeit R2015b.

+1

Tricky Suche Ich denke, dass dies helfen kann, werfen Sie einen Blick auf: [link] (http://stackoverflow.com/questions/33474206/add-custom-legend-without-any-relation-to-the-graph) – Niles

Antwort

0

Dies ist der nächstgelegene ich bekam haben einen kurzen Blick mit r2015b mit:

Example image

%% 
f = figure; 
ax = axes; 
x = -pi:pi/20:pi; 
hold all; 
amplitude = 1; 
c1 = plot(x,amplitude*cos(x),'-', 'DisplayName', 'cos(x)'); 
s1 = plot(x,amplitude*sin(x),'-', 'DisplayName', 'sin(x)'); 

ax.ColorOrderIndex = 1; 

amplitude=3; 
c2 = plot(x,amplitude*cos(x),'.', 'DisplayName', ' '); 
s2 = plot(x,amplitude*sin(x),'.', 'DisplayName', ' '); 

lg = legend([c1 c2 s1 s2]); 
hold off; 

Legenden einfacher pre HG2 wurde Manipulieren - so eine ältere Version von Matlab (r2013a) erhalte ich:

enter image description here

%% 
f = figure; 
ax = handle(axes); 
x = -pi:pi/20:pi; 
hold all; 
amplitude = 1; 
c1 = plot(x,amplitude*cos(x),'r-', 'DisplayName', 'cos(x)'); 
s1 = plot(x,amplitude*sin(x),'b-', 'DisplayName', 'sin(x)'); 

amplitude=3; 
c2 = plot(x,amplitude*cos(x),'r.', 'DisplayName', ' '); 
s2 = plot(x,amplitude*sin(x),'b.', 'DisplayName', ' '); 

lg = handle(legend([c1 c2 s1 s2])); 
hold off; 

% You need to find which of the children on the legend is 
% each of the plots: 
c1 = handle(lg.Children(1)); 
c1.YData = 0.3; 

s1 = handle(lg.Children(7)); 
s1.YData = 0.75; 
+0

To Wer auch immer downvoted - können Sie erklären warum? – matlabgui

+1

keine Ahnung, ich habe gerade upvoted :) –

Verwandte Themen