2011-11-29 13 views
7

È possibile annotare le cifre lattice (o ggplot2) con elementi creati con polygon() (o elementi creati con una funzione simile) dalla libreria graphics?Si può usare poligono() o equivalente nei diagrammi lattice e ggplot2?

Non ho molta familiarità con nessuna delle due librerie oltre agli esempi di semplici grafici pubblicati sul Web e stampati nel libro di Deepayan Sarkar. Pertanto, mentre ho il codice per quello che ho fatto in R con la libreria graphics, mi viene indicato che le funzioni e gli esempi di utilizzo equivalenti rilevanti per lattice o ggplot2 sono apprezzati in particolare. Grazie.

+1

'? Panel.polygon' e'? Geom_polygon' rispettivamente (certamente non ci sono esempi in reticolo doc, ma l'idea è la stessa dei poligoni grafici di base) – baptiste

+0

Ottima domanda. Ho notato nel corso degli anni che i metodi del reticolo non sono ben noti. Anche un forte lavoro sul tagging. –

+0

http://stackoverflow.com/q/3610291/269476 potrebbe essere di interesse – James

risposta

8

Esistono una serie di metodi che consentono di aggiungere oggetti grafici a trame reticolari. Nel pacchetto latticeExtra ci sono layer e i metodi "+". In pkg: lattice stesso, si può aggiungere a grafici esistenti con trellis.focus(...) seguito da chiamate del pannello come panel.polygon(). Li ho usati in passato per annotare contourplot() s.

Se fai l'esempio su un aiuto (contourplot) e poi seguire che:

trellis.focus("panel", 1, 1) 
do.call("panel.polygon", list(x =c(5,15,15,5,5), y=c(60,60,90,90,60))) 
trellis.unfocus() 

... si dovrebbe vedere un rettangolo con vertici c (5,60), c (15,60) , c (15,90), c (5,90) è stato inserito nel pannello # 1 del grafico. Si noti che la numerazione è indicata in basso a sinistra come (1,1). In genere non ho usato l'orientamento all'oggetto per restituire un vlaue da quel do.call(), ma sospetto che avrebbe avuto successo.

enter image description here

11

ecco la versione ggplot2 del primo esempio in ?polygon()

x <- c(1:9,8:1) 
y <- c(1,2*(5:3),2,-1,17,9,8,2:9) 

ggplot(NULL, aes(1:10, 1:10)) + geom_point() + 
    geom_polygon(aes(x, y), fill = "orange", colour = "skyblue", alpha = 0.5) 

enter image description here