2012-04-11 8 views
35

Mam legendę na wykresie z linią (z instrukcji abline) przechodzącą przez nią. Jak mogę osiągnąć, że abline staje się niewidoczne w pobliżu legendy? To powinno być możliwe do osiągnięcia, ustawiając białe tło legendy, bez granic, ale jak mogę to osiągnąć? Załóżmy wykres powinien wyglądać następująco:wątki fabularne bez obramowania iz białym tłem

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") 

I dostać to nieco bardziej skomplikowana: Jeżeli legenda koliduje z kropkami dot-plot: W jaki sposób można osiągnąć, że ablines dostaje niewidoczny w sąsiedztwie legendy (jak wyżej), ale kropki są nadal widoczne?

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") 

I wreszcie: czy istnieje sposób wprowadzania łamania linii w instrukcjach legendy?

+0

Dlaczego to pytanie nie jest oznaczone jako odpowiedź? –

Odpowiedz

21

Jak udokumentowano w ?legend to zrobić tak: przerwy

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

Linia osiągane są z nowej linii charakteru \n. Nadal widoczne punkty są wykonywane po prostu poprzez zmianę kolejności kreślenia. Pamiętaj, że kreślenie w R jest jak rysowanie na kartce papieru: każda rzecz, którą stworzysz, zostanie umieszczona na szczycie tego, co aktualnie tam jest.

Należy zauważyć, że tekst legendy jest obcięty, ponieważ zmniejszyłem wymiary działki (windows.options nie istnieje na wszystkich platformach R).

+1

box.lwd = 0 będzie działać poprawnie. bty = 'n' jest prawdopodobnie lepszy, ponieważ oznacza to, że typ skrzynki legendy w ogóle nie ma wartości NONE. Obie dobre odpowiedzi! –

+2

To jest lepsza odpowiedź niż bty = 'n', ponieważ zachowuje białą bryłę, co jest pierwotnym pytaniem. W drugim punkcie, w którym legenda obejmuje linię, ale nie punkty, jedynym rozwiązaniem, jakie widzę, jest dodanie polecenia points() po linii legendy. – slammaster

76

Użyj opcji bty = "n" w legend, aby usunąć okno z legendą. Na przykład:

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

Działa to doskonale! Dzięki! – Contango

+2

To jest właściwa odpowiedź. Byłoby miło, gdyby dokumentacja R dosłownie wyjaśniła, że ​​bty = 'n' nie spowoduje narysowania pola legendy. Zamiast tego po prostu mówi, że "n" jest jedną z opcji bez wyjaśnienia wpływu tej opcji. Zastanawiam się, czy opiekunowie R pozwolą komuś podobnemu jak ja ulepszyć standardową dokumentację, taką jak ta. –

+1

co znaczy bty? – olala

Powiązane problemy