superponer - Cómo dibujar una bonita flecha en ggplot2
superponer graficas en r ggplot (2)
Usualmente uso geom_segment
para crear flecha. Pero para hacer eso tenemos que modificar los datos del formato "largo" al "ancho" (usualmente usando dcast
del paquete reshape2
o data.table
). Pero esta vez intenté usar la función de reshape
base
.
ggplot(DATA, aes(x=VALUE, y=NAME)) +
geom_point(size=5, aes(colour=YEAR)) +
geom_segment(data = reshape(DATA, v.names="VALUE", idvar = "NAME", timevar = "YEAR", direction = "wide"),
aes(x=VALUE.2011, xend=VALUE.2016, y=NAME, yend=NAME), size = 2,
arrow = arrow(length = unit(0.5, "cm")))
EDITAR : Acabo de encontrar que el mismo problema pertenece a las flechas de tipo "cerrado". Por ahora, intente guardar el diagrama como un gráfico vectorial (pdf o svg, usando ggsave
o el menú Exportar en la pestaña Plots). El resultado no es "desordenado".
Estoy creando un diagrama ggplot
donde quiero tener algunas flechas entre dos puntos. La tarea principal se realiza fácilmente con geom_line(arrow = arrow())
. Sin embargo, quiero tener algunas flechas gruesas "bellas". Cambiar el tamaño de la flecha a través del size=
no ayuda, ya que desordena la cabeza de la flecha por completo. Ilustraré mis problemas:
Crea algunos datos de muestra y un diagrama:
NAME <- c("A", "A", "B", "B", "C", "C")
YEAR <- c(2016, 2011, 2016, 2011, 2016, 2011)
YEAR <- as.factor(YEAR)
VALUE <- c(1, 4, 1, 5, 2, 8)
DATA <- data.frame(NAME, YEAR, VALUE)
ggplot(DATA, aes(x=VALUE, y=NAME)) +
geom_point(size=5, aes(colour=YEAR)) +
geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"))
El diagrama resultante se ve así:
Ahora he tratado de "espesar" las flechas ...
ggplot(DATA, aes(x=VALUE, y=NAME)) +
geom_point(size=5, aes(colour=YEAR)) +
geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="first", type = "closed"), size = 3)
Ese es el resultado que se muestra aquí:
Mi pregunta: ¿hay alguna manera de trazar algunas flechas gruesas "bellas"?
En la última devtools::install_github("tidyverse/ggplot2")
(y me refiero a devtools::install_github("tidyverse/ggplot2")
más reciente, al momento de escribir esta respuesta, estoy seguro de que lo harán lo suficientemente pronto) versión de ggplot2
, hay un argumento de geom_segment
de geom_segment
para geom_segment
. Usar linejoin=''mitre''
proporcionará bordes nítidos. Mira lo siguiente para más detalles .