2013-07-10 3 views
7

Ich versuche automatisch Platzieren Sie eine Legende Box in einem Diagramm, aber ich habe immer noch Probleme damit. Ich möchte das Legendenfeld nahe an der Ecke des Diagramms platzieren, aber mit einem kleinen Abstand/Rand.Auto Platzierung von Legendenbox mit Rand/Polsterung

Verwenden Sie vordefinierte Positionen wie "topright" oder "bottomleft", platzieren Sie die Legende zu nahe/auf den Rand des Diagramms, wie here; und ich finde es erstaunlich ärgerlich, Pixel für Pixel weiter zu versuchen, um eine schöne Platzierung der Box zu erreichen, wie gezeigt here.

Ich habe mich gefragt, ob es sowieso war, um die Legendenbox basierend auf der Breite der Handlung selbst und nicht auf max/min Werte zu positionieren. Etwas, das würde automatisch Position der Legende über p% in der Nähe einer definierten Ecke. Gibt es das überhaupt in R? Oder sogar eine Möglichkeit, vordefinierten Positionen einen Padding hinzuzufügen?

Antwort

11

Verwenden Sie die Option inset=legend

Einschub: Inset Abstand (s) von den Rändern als ein Bruchteil des Grundstücks Region wenn Legende nach Stichwort platziert wird.

ZB:

plot(1:10) 
legend("topleft","blah",inset=0.05) 

Wenn Sie sicherstellen möchten, dass die Legende Einsatz der gleichen Entfernung von der Ecke ist, abhängig von der x: y-Verhältnis von Ihrem Grundstück, könnten Sie etwas ein tun etwas komplizierter wie:

plot(1:10) 
xyratio <- do.call("/",as.list(par("pin"))) 
inset.amount <- 0.05 
legend("topleft","blah",inset=c(inset.amount,inset.amount * xyratio)) 

Dies wird auseinander fallen, wenn Sie die Größe des Plot-Gerät obwohl.

enter image description here

+1

Wenn Sie auf "Ihre eigene Rolle" wollten Sie versucht haben könnte: 'Legende (par ('usr') [3] + 0,1 * (par ('usr') [4] -par ("usr") [3]), par ('usr') [4] -0,1 * (Par ('usr') [4] -par ('usr') [3]), Legende = "TEST") ' –

+0

@DWin Ich habe tatsächlich so etwas erwartet, aber solange "Inset" den Job erledigt, denke ich, dass es genügen wird. Danke für die Alternative sowieso. (: – Rubens

+1

@Rubens - Ich habe aktualisiert, um eine andere Alternative zu zeigen, mit der Sie eine Einfügung angeben können, die auf das x/y-Verhältnis des Plots skaliert wird. – thelatemail