2013-03-25 4 views
5

In meinem Plot habe ich zwei sich überschneidende Polygone, ein farbiges und eines mit Schattierungslinien. In der Legende möchte ich die zwei Polygone und das Kreuzungsfeld korrekt dargestellt haben. Hier ist, was ich habe:Legende mit Farbfüllung und Schattierungslinien 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

Ist es möglich, die Rahmenfarbe in der Legende für B zu rot wechseln und rot Schraffurlinien auf das Symbol für AB hinzufügen?

Antwort

10

sollten Sie Argument hinzufügen border= zu legend() die Rahmenfarbe von kleinen Kisten zu ändern und dann einen weiteren Anruf zu legend() hinzufügen Schattierung AB Box mit Farbe zu überlagern. In der zweiten Zeile legend() setze ich density= für den AB auf 10 und ändere auch fill= in rot für die gleiche Box.

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

großen Werke, danke! – Sophia

+0

Seltsam, wenn 'bty' auf" o "(= Standard) gesetzt ist, verschwindet die graue Hintergrundfarbe der AB-Legende. – Rob

+1

@Rob Wenn Sie bty = "o" setzen, wird das Legendenfeld mit weißer Füllung geplottet und Sie sehen die vorherige Legende nicht mehr. Fügen Sie auch bg = NA zum zweiten Aufruf von legend() hinzu, um den Hintergrund transparent zu machen. –

Verwandte Themen