2012-04-11 8 views
35

Tengo una leyenda en una trama con una línea (a partir de una declaración de abline) que la atraviesa. ¿Cómo puedo lograr que la abline se vuelva invisible en la proximidad de la leyenda? Esto debería ser posible configurando el fondo de la leyenda de blanco, sin bordes, pero ¿cómo puedo lograrlo? Asumir el gráfico debería tener este aspecto:leyendas de trama sin borde y con fondo blanco

windows.options(width=30, height=12) 
plot(1:10) 
abline(v=seq(1,10,1), col='grey', lty='dotted') 
legend(4.8, 3, "This legend text should not be disturbed by the dotted grey lines") 

Y para conseguir un poco más complicado: Si la leyenda interfiere con los puntos del punto de parcelas: ¿Cómo se puede lograr que los ablines obtiene invisible en la proximidad de la leyenda (como arriba), pero que los puntos siguen siendo visibles?

windows.options(width=30, height=12) 
plot(1:10) 
abline(v=seq(1,10,1), col='grey', lty='dotted') 
legend(1, 5, "This legend text should not be disturbed by the dotted grey lines, but the plotted dots should still be visible") 

Y finalmente: ¿Hay alguna manera de introducir saltos de línea en los enunciados de leyenda?

+0

¿Por qué esta pregunta no está marcada como respondida? –

Respuesta

21

Como se documenta en ?legend lo hace de esta manera: se rompe

plot(1:10,type = "n") 
abline(v=seq(1,10,1), col='grey', lty='dotted') 
legend(1, 5, "This legend text should not be disturbed by the dotted grey lines,\nbut the plotted dots should still be visible",box.lwd = 0,box.col = "white",bg = "white") 
points(1:10,1:10) 

enter image description here

línea se logran con el carácter de línea \n. Hacer los puntos aún visibles se hace simplemente cambiando el orden de trazado. Recuerde que trazar en R es como dibujar en una hoja de papel: cada cosa que traza se colocará encima de lo que está allí.

Tenga en cuenta que el texto de la leyenda se corta porque reduje las dimensiones de la gráfica (windows.options no existe en todas las plataformas R).

+1

box.lwd = 0 funcionará bien. bty = 'n' es probablemente mejor, porque significa que el tipo de cuadro de leyenda es NINGUNO. ¡Ambas buenas respuestas! –

+2

Esta es una mejor respuesta que bty = 'n' porque conserva el bg blanco, que es lo que pidió la pregunta original. Para el segundo punto, donde la leyenda cubre la línea pero no los puntos, la única solución que puedo ver es agregar un comando points() después de la línea de leyenda. – slammaster

76

Utilice la opción bty = "n" en legend para eliminar la caja alrededor de la leyenda. Por ejemplo:

legend(1, 5, 
     "This legend text should not be disturbed by the dotted grey lines,\nbut the plotted dots should still be visible", 
     bty = "n") 
+1

¡Esto funciona brillantemente! ¡Gracias! – Contango

+2

Esta es la respuesta correcta. Sería bueno si la documentación de R literalmente explicara que el bty = 'n' no provocará que se dibuje ningún cuadro de leyenda. En cambio, simplemente dice que 'n' es una de las opciones sin explicar el efecto de esa opción. Me pregunto si los mantenedores de R le permitirían a alguien como yo mejorar la documentación estándar, como esta. –

+1

¿Qué significa bty? – olala

Cuestiones relacionadas