我正在尝试执行类似于本帖子here的操作,使用箭头将基于分组(在本例中为站点)的点连接起来,并根据特定值(年份)指定箭头方向。我无法获得箭头的方向才能正常工作。我希望箭头的方向从2017年到2018年(对于每个不同的网站)。下面是我到目前为止的代码和示例数据(这是从协调输出的示例前4行示例)。
ggplot() +
geom_point(data = data.scores[1:4,], aes(x = NMDS1, y = NMDS2),
shape = year[1:4]) +
geom_line(data = data.scores[1:4,], aes(x=NMDS1, y=NMDS2, group = site),
arrow = arrow(length = unit(0.15, "cm")))
样本数据如下:
>data.scores
NMDS1 NMDS2 site year
1 -0.009286247 -0.009874382 1 2018
2 -0.099650245 0.021869952 1 2017
3 0.034465891 0.043034188 2 2018
4 0.040777968 0.028120489 2 2017
因此,此输出将是从点2(站点1,2017年)到点1(站点1,2018年)的箭头。我看过很多类似的文章,但还不太清楚,谢谢。
答案 0 :(得分:0)
一种方法是按year
对数据进行排序,并使用geom_path
而不是geom_line
,后者按数据顺序而不是x变量的顺序进行绘制。
library(dplyr) #for arrange and %>%
library(ggplot2)
data.scores %>%
arrange(year) %>% #sort ascending so that 2018 is plotted last
ggplot() +
geom_point(aes(x = NMDS1, y = NMDS2, shape = factor(year)),
size = 3) + #I've made it bigger so you can see it better!
geom_path(aes(x = NMDS1, y = NMDS2, group = site),
arrow = arrow(length = unit(0.55, "cm")))
请注意,如果您希望每年使用不同的形状,则shape
参数必须位于aes()
内。