2013-03-25 9 views
5

Nella mia trama ho due poligoni intersecanti, uno colorato e uno con linee di ombreggiatura. Nella legenda vorrei che i due poligoni e l'array di intersezione fossero rappresentati correttamente. Ecco quello che ho:Legenda con riempimento colore e linee di ombreggiatura in Base 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

E 'possibile cambiare il colore del bordo nella leggenda per B al rosso e aggiungere linee di ombreggiatura rosse per il simbolo AB?

risposta

10

Si dovrebbe aggiungere argomento border= a legend() per cambiare il colore del bordo di piccole scatole e quindi aggiungere un'altra chiamata a legend() di sovrapporre ombreggiatura a scatola AB con il colore. Nella seconda riga legend() ho impostato density= per AB a 10 e modificato anche fill= in rosso per la stessa casella.

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

funziona bene, grazie! – Sophia

+0

Strano, se 'bty' è impostato su" o "(= predefinito), il colore di sfondo grigio della casella della legenda AB scompare. – Rob

+1

@Rob Se si imposta bty = "o", la trama della legenda con riempimento bianco viene tracciata e quindi non si vede più la legenda precedente. Aggiungi anche bg = NA alla seconda chiamata di legend() per rendere trasparente lo sfondo. –