2

我想在下图中绘制发展轨迹,即点2009和2010应该用带箭头的线连接(指向2010),点2010和2011应该用带箭头的线连接(指向2011) ) 等等 ...

这应该适用于两组。

这是我到目前为止所做的:

library(ggplot2)

x <- c(100, 200, 300, 200, 500, 320, 300, 50)
y <- c(100, 250, 600, 700, 60, 120, 200, 360)
t <- rep(seq(2009,2012),2)
z <- rep(c("A","B"),each=4)

d <- as.data.frame(cbind(z,t,x,y))
d <- d[order(d$z, d$t),]

ggplot(data = d, aes(x = x, y = y, colour = z, label=t)) + 
  geom_line(aes(group = z)) +
  geom_point() +
  geom_text()

在此处输入图像描述

我的 2 个问题是:(1)“错误”点已连接,(2)箭头丢失。

4

1 回答 1

4

我必须添加一个额外的列z2才能ggplot2将每一行视为一个单独的段。否则,仅在每组线段的末尾绘制一个箭头。该代码解释得最好:

library(grid)
library(ggplot2)

x <- c(100, 200, 300, 200, 500, 320, 300, 50)
y <- c(100, 250, 600, 700, 60, 120, 200, 360)
t <- rep(seq(2009,2012),2)
z <- rep(c("A","B"),each=4)
z2 <- LETTERS[1:length(z)]

d <- as.data.frame(cbind(z,z2,t,x,y))
d <- d[order(d$z, d$t),]

ggplot(data = d, aes(x = x, y = y, colour = z2, label=t)) + 
  geom_path(aes(group = z), arrow = arrow(ends = "last")) +
  geom_point() +
  geom_text()

……结果

在此处输入图像描述

现在你只需要稍微调整一下色阶,或者对z2.

于 2013-04-24T20:15:55.063 回答