organizar la cuadrícula para colocar la tabla y el gráfico en una imagen

Me gusta colocar una tabla y una trama en la misma imagen. Yo estoy haciendo esto:

mi marco de datos x es este:

1/1/2010 10
1/2/2010 20
1/3/2010 15
1/4/2010 56
1/5/2010 46
1/6/2010 15
1/8/2010 15
1/9/2010 15
1/10/2010 20
1/11/2010 15
1/12/2010 15
1/13/2010 40
1/14/2010 15
1/15/2010 15
1/16/2010 70

p1<-plot(x)
p2<-tableGrob(x)

png("image1.png")
grid.arrange(p2, p1, main="Total Data and Image"
dev.off()

Funciona, pero parece haber mucho espacio entre p2 y p1. ¿Cómo puedo tener poco o nada de espacio? Además, ¿hay alguna manera de hacer que la fuente sea más grande en la principal?

Gracias,

preguntado el 22 de mayo de 12 a las 19:05

su código no es reproducible, ¿qué paquete de trazado está usando? -

Los datos no son importantes, pueden ser cualquier cosa. Estoy tratando de mostrar datos en formato de tabla y gráfico en la misma imagen. El espacio entre las cuadrículas es enorme. Estoy usando la biblioteca (gridExtra) -

@SeanKaplan: Es útil tener un ejemplo reproducible para que otros puedan entender lo que quiere decir con "mucho espacio entre p2 y p1". Ayudará a centrar la discusión. -

Creo que encontré un trabajo alrededor. Puede haber otras soluciones, pero creo que esto funciona para mí. gracias de nuevo. grid.arrange(arrangeGrob(p2, p1, main="Total de datos e imagen", clip=TRUE, anchos=c(1,2), alturas=c(1,2))) -

esta última línea es bastante absurda; de todos modos, conocer el paquete de trazado es importante si desea una respuesta. -

2 Respuestas

Ésta no es una respuesta.

Su código no es reproducible. Envolviendo sus datos en un read.table() función (y aceptando nombres de variables predeterminados), adivinando que está utilizando gráficos base, corrigiendo errores tipográficos en su código y cargando el gridExtra paquete (necesario para el grid.arrange función), todavía no puedo hacer que su código funcione. Utilizando el ggplot2 paquete para dibujar el gráfico, puedo hacer que su código funcione. El código ahora es reproducible. Vea aquí cómo hacer un maravillosa ejemplo reproducible. Y usando mi código, el resultado en mi opinión se ve bastante bien. Pero puede que no sea lo que pretendías. Por eso la comunidad te pide que generes un ejemplo reproducible. Tanto mejor para ver lo que quiere decir con "mucho espacio entre p2 y p1".

Pero tomando su solución de su comentario anterior, hay elementos innecesarios en el código. No necesitas ambos grid.arrange y arrangeGrob. Además, debido a que tiene los elementos dispuestos uno al lado del otro, no creo que necesite ambos widths y heights; widths solo es suficiente.

library(ggplot2)
library(gridExtra)

x = read.table(text = "
1/1/2010 10
1/2/2010 20
1/3/2010 15
1/4/2010 56
1/5/2010 46
1/6/2010 15
1/8/2010 15
1/9/2010 15
1/10/2010 20
1/11/2010 15
1/12/2010 15
1/13/2010 40
1/14/2010 15
1/15/2010 15
1/16/2010 70", sep = "", header = FALSE)

p1<-ggplot(x, aes(V2, V1)) + geom_point()
p2<-tableGrob(x)
grid.arrange(p2, p1, main="Total Data and Image", ncol = 2)

Tu solución:

grid.arrange(p2, p1, main="Total Data and Image", ncol = 2, widths=c(1,2))

Editar La solución de Baptiste: vea los comentarios a continuación:

  grid.arrange(p2, p1, main=textGrob("Total Data and Image", gp=gpar(cex=3)), ncol = 2,
   widths=unit.c(grobWidth(p2), unit(1,"npc") - grobWidth(p2)))

contestado el 23 de mayo de 17 a las 11:05

+1 Aún más fácil, grid.arrange(left=p2, p1, main=textGrob("Total Data and Image", gp=gpar(cex=3))) desde tableGrob tiene un ancho absoluto. Sin embargo, el título ya no estaría centrado, pero eso da la idea de definir los anchos como unit.c(grobWidth(p2), unit(1,"npc") - grobWidth(p2)) - bautista

Para aumentar el tamaño de fuente en el uso principal:

plot(x, y , cex.main=3)

Echa un vistazo a esta publicación y tendrás una idea sobre los tamaños de fuente: Trazado en el software R, cómo ampliar los valores de los ejes en un archivo PNG grande

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.