Ho scritto il seguente codice:ggplot2 geom_line() dovrebbe puntare al valore specificato
library(ggplot2)
data <- structure(list(x = c(1L, 6L, 3L, 4L, 2L, 3L, 6L, 1L, 5L, 2L,
1L, 5L), y = c(1L, 7L, 5L, 6L, 3L, 4L, 6L, 2L, 5L, 6L, 5L, 2L
), year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L), .Label = c("2010", "2011"), class = "factor"), matching = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L), .Label = c("person1",
"person2", "person3", "person4", "person5", "person6"), class = "factor")), .Names = c("x",
"y", "year", "matching"), row.names = c(NA, -12L), class = "data.frame")
data$year <- factor(data$year)
colors <- c("#4cb5ee", "#a0d099", "red")
p <- ggplot(data, aes(x=x, y=y)) +
geom_point(aes(colour=year), shape=16, size=6) +
geom_line(aes(group=matching), arrow=arrow(length=unit(0.15,"cm")), colour="black", size=1) +
xlab("x") + ylab("y") +
scale_colour_manual("year", values=colors) +
scale_x_continuous(limits=c(1,7), breaks=seq(1,7, by=1)) +
scale_y_continuous(limits=c(1,7), breaks=seq(1,7, by=1))
print(p)
Dà il seguente risultato:
Ma quello che voglio geom_line() per fare è: punta sempre al punto in cui l'anno = 2011. Non riesco a capire perché la freccia della linea è punto a volte in un punto che si riferisce all'anno = 2010 e talvolta punti in un punto in cui l'anno = 2011.
Quello che ho scoperto è che freccia richiede diversi argomenti:
arrow(angle = 30, length = unit(0.25, "inches"), ends = "last", type = "open")
In modo che io potrei dire ends="first"
. Ma non posso generalizzare che ends
è sempre first
o sempre last
.
Ho provato ad aggiungere una colonna al mio data.frame che ha l'informazione se la freccia dovrebbe finire prima o l'ultima, ma non mi ha dato l'output che volevo.
Ogni aiuto è molto apprezzato :-)
Grazie in anticipo!
Si tratta di una soluzione migliore. L'approccio che ho esposto può offrire una certa flessibilità per situazioni più complesse, ma questo è più adatto per il compito da svolgere. – Chase
Mi picchia. Suppongo di dover essere soddisfatto del fatto che io (un utente non ggplot) l'ho messo insieme dall'aiuto in linea. –
Grazie per la tua soluzione, è davvero facile ;-) –