2011-11-29 13 views
7

¿Es posible anotar lattice (o ggplot2) figuras con elementos creados con polygon() (o elementos creados con una función similar) de la biblioteca graphics?¿Se puede usar un polígono() o equivalente en diagramas de celosía y ggplot2?

No estoy muy familiarizado con ninguna biblioteca más allá de ejemplos de gráficos simples publicados en la web e impresos en el libro de Deepayan Sarkar. Por lo tanto, aunque tengo un código para lo que he estado haciendo en R con la biblioteca graphics, apuntándome a funciones relevantes, equivalentes y ejemplos de uso para lattice o ggplot2 específicamente lo agradecería. Gracias.

+1

'? Panel.polygon' y'? Geom_polygon' respectivamente (la verdad no hay ejemplos en celosía doc, pero la idea es la misma que con los polígonos de gráficos base) – baptiste

+0

Gran pregunta. A lo largo de los años, he notado que los métodos de celosía no son muy conocidos. También trabajo fuerte en etiquetado. –

+0

http://stackoverflow.com/q/3610291/269476 podría ser de interés – James

Respuesta

8

Hay una serie de métodos que permiten agregar objetos gráficos a parcelas de celosía. En el paquete latticeExtra hay layer y los métodos "+". En pkg: enrejado en sí mismo, se puede agregar a las gráficas existentes con trellis.focus(...) seguido de llamadas al panel como panel.polygon(). Los he usado en el pasado para anotar contourplot() s.

Si lo hace el ejemplo de la ayuda (contourplot) y después se sigue que por:

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() 

... debería ver un rectángulo con vértices c (5,60), C (15,60) , c (15,90), c (5,90) se ha colocado en el panel n. ° 1 de la gráfica. Observe que la numeración se escribe en la parte inferior izquierda como (1,1). En general, no he usado la orientación a objetos para devolver un vlaue desde ese do.call(), pero sospecho que tendrá éxito.

enter image description here

11

Aquí está la versión ggplot2 del primer ejemplo en ?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

Cuestiones relacionadas