Deseo insertar una leyenda que dice que no está relacionado con el gráfico de ningún tipo:

figure;
hold on;
plot(0,0,'or');
plot(0,0,'ob');
plot(0,0,'ok');
leg = legend('red','blue','black');

Ahora quiero agregar a otra figura:

figure;
t=linspace(0,10,100);
plot(t,sin(t));
%% ADD THE LEGEND OF PLOT ABOVE 
este es un ejemplo sencillo de una cosa más grande que me tienen para lo que se sugiere no es relevante, debe haber una manera de hacerlo
Por lo que no es claro lo que se quiere lograr. Puedes dar más información? ¿Por qué necesita leyenda si no hay datos relacionados en la trama.
lo que quiero lograr es exactamente lo que escribí, utilice el cuadro con la leyenda de la primera figura, y tienen que aparece en la segunda
2 hacky opciones: (1) añadir vacía lineserie (o cualquier vacío objeto gráfico) en el axes así que hay suficiente para llenar la leyenda. (2, la mejor en mi opinión) hacer su propia legend objeto (es solamente una especial axes objeto, después de todo) que luego se puede mover/copiar/modificar libremente dentro de sus figuras. Ejemplo de cómo hacer que se puede encontrar aquí: parcela-leyenda-de título.
Usted puede incluso utilizar NaN en lugar de 0 por su trama de datos. De esta manera usted incluso no tiene que tocar el visible de la propiedad, no se mostrará nada de todos modos (la leyenda todavía aceptar los datos de la serie como una entrada válida).

OriginalEl autor jarhead | 2015-11-02

2 Comentarios

  1. 27

    Así es como yo lo he solucionado 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');

    Este se trazan los puntos adicionales, pero debido a que las coordenadas están en NaN no serán visibles en la trama en sí:

    Añadir leyenda personalizado sin ningún tipo de relación con la gráfica

    EDITAR 26/10/2016: Mi respuesta original resultados en gris, las entradas de leyenda en 2016b. La versión actualizada del código anterior funciona, pero la respuesta a continuación sólo es relevante pre-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');

    Este se trazan los puntos adicionales, pero no serán visibles en la trama en sí.

    También puede utilizar copyobj para copiar elementos gráficos de una figura a otra, si usted tiene un montón de elementos, a continuación, utilizar set(x, 'visible', 'off') de ellos para ocultar antes de mostrar la leyenda, pero depende de lo que su aplicación final.

    como ya se ha comentado que u puede utilizar NaN, y entonces u no es necesario utilizar la parte visible de la manija
    En matlab r2016b, la leyenda de un invisible trama se pone de color gris..
    ay, sí, estás en lo cierto! He actualizado mi respuesta a usar NaN coordenadas en lugar de invisible parcelas, según lo sugerido por jarhead y merluza de cola en los comentarios.
    El punto clave creo que es establecer: ‘visible’, ‘off’

    OriginalEl autor zelanix

  2. 3

    Tu pregunta es un poco confuso. Sin embargo, la primera cosa que pensé cuando la lectura era la texto función en Matlab.

    Puede utilizar el texto función para agregar texto a una Matlab figura. Su uso es

    >> text(x, y, str);

    donde x y y son las coordenadas en la figura donde desea agregar el texto str. Usted puede utilizar el Color opción de texto de colores y de TeX para dibujar líneas o incluso _. Me he metido muy creativo con las parcelas con texto.

    He aquí un rápido y sucio ejemplo de emular una leyenda con texto

    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

                 Añadir leyenda personalizado sin ningún tipo de relación con la gráfica

    Para este caso específico se podría utilizar el comando específico (señalado por @Merluza de cola en los comentarios).

    ht = text(5, 0.5, {'{\color{red} o } Red', '{\color{blue} o } Blue', '{\color{black} o } Black'}, 'EdgeColor', 'k');

    para producir

                 Añadir leyenda personalizado sin ningún tipo de relación con la gráfica

    por recuperar el identificador de la texto objeto se vuelve trivial para copiar a una nueva figura, copyobj(ht, newfig). [Uno]

    Sin embargo text no proporciona el color y formato que la leyenda proporciona.
    Usted puede utilizar el Color opción de text de colores y de TeX para dibujar líneas o incluso _. Me he metido muy creativo con las parcelas con text.
    Suena interesante, ¿podrías dar un pequeño ejemplo de un TeX y Color sintaxis en text objetos ?
    De niza. También puede modificar el color parcialmente en una zona de texto (con TeX marcas de color), y dispone de varias líneas de texto en un objeto de texto. Así se podría definir la leyenda de una sola vez !. Intente esto : ht = text(5,0,{'{\color{red} o } Red (serie 1)','{\color{blue} o } Blue (serie 2)','{\color{black} o } Black (serie 3)'},'EdgeColor','k') ;. De esta manera usted no tiene que definir múltiples text objetos.
    Yo, definitivamente, no la mente. Tenía la esperanza de que te gustaría reproducir el ejemplo ;-). No es lo suficientemente distinta de su respuesta a aparte merecen respuesta, pero se da una mayor info/opciones para construir una bonita leyenda, así que vale la pena mencionar. Yo también echo de menos una manera de dibujar líneas agradables con el texto. También, en caso de que su línea de símbolos son diferentes, usted puede considerar el uso de un tamaño fijo de la fuente con el fin de mantener una buena alineación (bastante feo). Un último consejo, me gustaría recuperar el identificador del objeto de texto creado, de esta manera se convierte en trivial para el uso de el mismo objeto en otra figura: copyobj(ht,newfig).

    OriginalEl autor IKavanagh

Dejar respuesta

Please enter your comment!
Please enter your name here