La adición de la tabla dentro de la representación de la región de ggplot en r

Me gustaría añadir una tabla con las coordenadas de relieve sitio en un ggplot.

Usando una versión anterior pregunta como datos de ejemplo:

set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5)

La adición de la tabla dentro de la representación de la región de ggplot en r

Me gustaría añadir la siguiente tabla a la esquina inferior derecha de la parcela dentro de la conspiración de la región. Algún consejo?

table<-cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,])
table

    sites  a          b
    site 1 10 -0.3053884
    site 2 11  1.5117812
    site 3 12  0.3898432
    site 4 13 -0.6212406
InformationsquelleAutor Elizabeth | 2012-09-07

4 Kommentare

  1. 67

    Puede utilizar ggplot2‘s annotation_custom con un tableGrob de la gridExtra paquete.

    library(ggplot2)
    library(gridExtra)
    set.seed(1)
    mydata <- data.frame(a=1:50, b=rnorm(50))
    mytable <- cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,])
    k <- ggplot(mydata,aes(x=a,y=b)) + 
      geom_point(colour="blue") + 
      geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
      annotation_custom(tableGrob(mytable), xmin=35, xmax=50, ymin=-2.5, ymax=-1)

    La adición de la tabla dentro de la representación de la región de ggplot en r

    • De niza. Me gustaría picar al menos cuatro de los decimales de b a pesar de que, a menos que realmente se preocupan de 1: 10.000 de precisión (sugerencia: no menos de volar a Marte).
    • Gracias! Este es un muy bonito y sencillo de la solución. Para que la tabla se destacan mejor es posible poner un marco a su alrededor?
    • echa un vistazo a ?tableGrob para ver la estética que usted puede controlar. El uso de show.box=TRUE será el marco para las células.
    • el control sobre la estética ha cambiado en la última versión, consulte la viñeta para las nuevas y distintas opciones.
    • es posible quitar la fila de números, mientras que los muestra ?
    • es posible especificar la posición relativa , en lugar de absoluta ?
    • Yo no lo creo. Usted puede utilizar Inf y -Inf de empujar a las extremidades o en el centro, pero se encuentran fuera de la trama de la región.

  2. 7

    @user3206440, @Punintended Una manera fácil de eliminar la fila de números existe: añadir rows = NULL a la llamada a la tableGrob.

    library(ggplot2)
    library(gridExtra)
    set.seed(1)
    mydata <- data.frame(a=1:50, b=rnorm(50))
    mytable <- 
       cbind(sites=c("site 1","site 2","site 3","site 4"), mydata[10:13,])
    k <- ggplot(mydata,aes(x=a,y=b)) + 
      geom_point(colour="blue") + 
      geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
      annotation_custom(tableGrob(mytable, rows=NULL), 
                        xmin=35, xmax=50, ymin=-2.5, ymax=-1)

    La adición de la tabla dentro de la representación de la región de ggplot en r

    Por favor, consulte la gridExtra Wiki.

  3. 3

    Con el lanzamiento de ‘ggplot2’ 3.0.0 y ‘ggpmisc’ 0.3.0 una nueva respuesta es más simple posible:

    library(ggplot2)
    library(ggpmisc)
    
    set.seed(1)
    mydata <- data.frame(a = 1:50, b = rnorm(50))
    table <- cbind(sites=c("site 1", "site 2", "site 3", "site 4"), mydata[10:13, ])
    
    ggplot(mydata, aes(x = a, y = b)) + 
      geom_point(colour = "blue") + 
      geom_point(data = mydata[10:13, ], aes(x = a, y = b), colour = "red", size = 5) +
      annotate(geom = "table", x = 37, y = -0.8, label = list(table), 
               vjust = 1, hjust = 0)

    ‘ggplot2’ 3.0.0 totalmente compatible tibbles (ver anuncio de la versión de) lo que es posible asignar una lista de tramas de datos a la label estética. El nuevo geom_table() en el paquete ‘ggpmisc 0.3.0 saca provecho de este, haciendo que la adición de tablas con una sintaxis similar a la de geom_label() posible (ver documentación). Aquí parecía el más apropiado para agregar a la tabla como un
    anotación, pero, por supuesto, geom_table() también puede ser utilizado directamente, como otros ggplot geometrías.

    La adición de la tabla dentro de la representación de la región de ggplot en r

  4. 1

    @user3206440: he encontrado una solución que elimina los números de fila. He formateado mi de datos como una matriz, asigna los nombres de columna, entonces había tableGrob llamar directamente. Siempre me había tableGrob llamar como una trama de datos, la fila nombre persistió.

    A continuación es un ejemplo. Estoy seguro de que hay una manera más fácil de lidiar con el chisq.prueba de salida

    chivalues <- chisq.test(chitable)
    chidf <- matrix(c(unlist(c(round(as.numeric(chivalues[1]), 2),
                        chivalues[2], round(as.numeric(chivalues[3]), 5), numcells))),
                       nrow = 1, ncol = 4, byrow = FALSE)
    colnames(chidf) <- c("Chi-Squared", "DF", "P Value", "Total Cells")

    Y luego, más tarde…

    annotation_custom(tableGrob(chidf), xmin=2, xmax=6, ymin=700, ymax=800)

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea