leyendas - plot matlab
Añadir leyenda personalizada sin ninguna relación con el gráfico (2)
Así es como he resuelto este problema en el pasado:
figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;
h = zeros(3, 1);
h(1) = plot(NaN,NaN,''or'');
h(2) = plot(NaN,NaN,''ob'');
h(3) = plot(NaN,NaN,''ok'');
legend(h, ''red'',''blue'',''black'');
Esto trazará los puntos adicionales, pero como las coordenadas están en NaN
, no serán visibles en la trama en sí:
EDICIÓN 26/10/2016: Mi respuesta original da como resultado entradas de leyenda en gris en 2016b. El código actualizado anterior funciona, pero la respuesta a continuación solo es relevante antes de 2016b:
figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;
h = zeros(3, 1);
h(1) = plot(0,0,''or'', ''visible'', ''off'');
h(2) = plot(0,0,''ob'', ''visible'', ''off'');
h(3) = plot(0,0,''ok'', ''visible'', ''off'');
legend(h, ''red'',''blue'',''black'');
Esto representará los puntos adicionales, pero no serán visibles en la propia gráfica.
También puede usar copyobj
para copiar elementos gráficos de una figura a otra si tiene muchos elementos, luego use set(x, ''visible'', ''off'')
para ocultarlos antes de mostrar la leyenda, pero depende de lo que haga. La aplicación final es.
Deseo insertar una leyenda que no esté relacionada con el gráfico en absoluto:
figure;
hold on;
plot(0,0,''or'');
plot(0,0,''ob'');
plot(0,0,''ok'');
leg = legend(''red'',''blue'',''black'');
Ahora deseo agregarlo a otra figura:
figure;
t=linspace(0,10,100);
plot(t,sin(t));
%% ADD THE LEGEND OF PLOT ABOVE
Tu pregunta es un poco confusa. Sin embargo, lo primero que pensé al leerlo fue la función de text
en Matlab.
Puede utilizar la función de text
para agregar texto a una figura de Matlab. Su uso es
>> text(x, y, str);
donde x
e y
son las coordenadas en la figura donde desea agregar el texto str
. Puede usar la opción Color
de text
para colores y TeX para dibujar líneas o incluso _
. Me he vuelto muy creativo con gráficos usando texto.
Aquí hay un ejemplo rápido y sucio de emular una legend
con text
x = 0:pi/20:2*pi;
y = sin(x);
plot(x,y)
axis tight
legend(''sin(x)'');
text(5.7, 0.75, ''sin(x)'');
text(5.1, 0.78, ''_____'', ''Color'', ''blue'');
que produce
Para este caso específico, puede usar el comando específico (anotado por @ Hoki en los comentarios).
ht = text(5, 0.5, {''{/color{red} o } Red'', ''{/color{blue} o } Blue'', ''{/color{black} o } Black''}, ''EdgeColor'', ''k'');
para producir
al recuperar el identificador del objeto de text
, resulta trivial copiarlo en una nueva figura, copyobj(ht, newfig)
. [ 1 ]