2013-03-25 13 views
5

Na moim wykresie mam dwa przecinające się wielokąty, jeden kolorowy i jeden z cieniowanymi liniami. W legendzie chciałbym, aby te dwa wielokąty i tablica przecięć były reprezentowane poprawnie. Oto co mam:Legenda z kolorowymi liniami wypełnienia i cieniowania w Bazie R

plot(1:4, 1:4, type="n", xaxt="n", xlab="", yaxt="n", ylab="") 
polygon(c(2,4,2), c(1,3,3), col="gray") 
polygon(c(3,3,1), c(1,3,2), col="red", density=10) 
legend("topleft", legend=c("A", "B", "AB"), fill=c("gray", "red", "gray"), 
      density=c(NA, 10, NA), bty="n") 

Intersecting polygons, legend problem

Czy jest możliwe aby zmienić kolor obramowania w legendzie do B do czerwonego i dodać czerwone linie cieniowania do symbolem AB?

Odpowiedz

10

Należy dodać argumentu border= do legend() zmienić kolor obramowania małych pudełek, a następnie dodać kolejne wezwanie do legend() nakładka do cieniowania AB Box z kolorem. W drugiej linii legend() ustawiłem density= dla AB na 10 i zmieniłem również fill= na czerwony dla tego samego pudełka.

plot(1:4, 1:4, type="n", xaxt="n", xlab="", yaxt="n", ylab="") 
polygon(c(2,4,2), c(1,3,3), col="gray") 
polygon(c(3,3,1), c(1,3,2), col="red", density=10) 
legend("topleft", legend=c("A", "B", "AB"), fill=c("gray", "red", "gray"), 
     density=c(NA, 10, NA), bty="n",border=c("black", "red", "black")) 
legend("topleft", legend=c("A", "B", "AB"), fill=c("gray", "red", "red"), 
     density=c(NA, 10, 10), bty="n",border=c("black", "red", "black")) 

enter image description here

+0

Działa świetnie, dziękuję! – Sophia

+0

Dziwne, jeśli 'bty' jest ustawione na" o "(= domyślnie), szary kolor tła pola legendy AB zniknie. – Rob

+1

@Rob Jeśli ustawisz bty = "o", zostanie wyświetlone okno legendy z białym wypełnieniem, więc nie będziesz już widział poprzedniej legendy. Dodaj również bg = NA do drugiego wywołania legendy(), aby tło stało się przezroczyste. –

Powiązane problemy