varias superponer studio modificar graficos graficas ggplot ejes barplot r ggplot2 diagram

superponer - ¿Es posible dibujar diagramas en R?



superponer graficas en r ggplot (1)

Por lo tanto, no recomiendo que confíe en ggplot para hacer esto, ya que lo más probable es que algunas de las otras soluciones sugeridas sean mejores, pero este problema me interesó ya que he tenido la intención de profundizar en las agallas de ggplot por un tiempo. Esto es lo que logré idear:

ggplot(df, aes(x=x, y=y, length=length, width=width)) + geom_hline(yintercept=seq(5, 35, by=10), color="white", size=2, linetype=2) + geom_car() + geom_text(aes(label=label, color=label), fontface=10, hjust=-0.2) + coord_equal() + theme(panel.background = element_rect(fill="#555555"), panel.grid.major = element_blank(), panel.grid.minor = element_blank())

Tendrás que descubrir las flechas, aunque creo que es sencillo con geom_segment . Ahora, para que esto funcione, tuvimos que crear geom_car , aunque si no necesita imágenes detalladas, puede usar geom_rect . Aquí está geom_car :

library(png) library(ggplot2) library(proto) car.raster <- readPNG("data/car.png") carGrob <- function(x, y, length, width) { rasterGrob( car.raster, x=x, y=y, hjust=1, height=width, width=length ) } GeomCar <- proto(ggplot2:::Geom, { draw <- function(., data, scales, coordinates, ...) { with( coord_transform(coordinates, data, scales), carGrob(x, y, xmax-xmin, ymax-ymin) ) } draw_legend <- function(., data, ...) { with(data, ggname(.$my_name(), fieldGrob(1, 0.5, ))) } reparameterise <- function(., df, params) { transform(df, xmin = x - length / 2, xmax = x + length / 2, length = NULL, ymin = y - width / 2, ymax = y + width / 2, width = NULL ) } objname <- "car" # name of the geom in lowercase. Must correspond to GeomField. desc <- "A car!" default_stat <- function(.) StatIdentity required_aes <- c("x", "y") guide_geom <- function(.) "car" default_aes <- function(.) aes() } ) geom_car <- function(mapping=NULL, data=NULL) { GeomCar$new(mapping=mapping, data=data) }

Y el auto mismo:

Y los datos que utilicé:

df <- read.table(h=T, t="vehicle x y length width label 1 150 10 14 5 other 2 180 8 12 5 other 3 220 10 18 5 other 4 145 20 15 5 target 5 250 18 14 5 other 6 160 30 13 5 other 7 200 33 15 5 other 8 240 31 22 5 other ")

Me preguntaba si hay algún paquete en R que pueda usar las coordenadas x, y y los tamaños de forma para dibujar algo como esto:

Tengo las coordenadas de los centros frontales de los vehículos y sus tamaños (largo y ancho).

Editar

Así es como se ve el conjunto de datos original:

> head(df) Vehicle.ID Frame.ID Global.X Global.Y Vehicle.Length Vehicle.width Lane Preceding.Vehicle.ID Following.Vehicle.ID Spacing Headway 1 2 43 6451214 1873261 14.5 4.9 2 0 13 0 0 2 2 44 6451217 1873258 14.5 4.9 2 0 13 0 0 3 2 45 6451220 1873256 14.5 4.9 2 0 13 0 0 4 2 46 6451223 1873253 14.5 4.9 2 0 13 0 0 5 2 47 6451225 1873250 14.5 4.9 2 0 13 0 0 6 2 48 6451228 1873247 14.5 4.9 2 0 13 0 0

Para cualquier cuadro dado, quiero visualizar los huecos, por ejemplo, para el marco no. 500:

ff <- subset(df, Frame.ID==500) qplot(x=Global.X, y=Global.Y, data=ff)

Todos estos puntos son las coordenadas centrales delanteras de los vehículos. No sé cómo mostrar la longitud y el ancho de cada vehículo y etiquetar los valores de separación.