gpt4 book ai didi

r - ggplot2 geom_line() 特定值之间的箭头方向

转载 作者:行者123 更新时间:2023-12-04 09:23:45 25 4
gpt4 key购买 nike

我正在尝试做与这篇文章类似的事情 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 年)的箭头。我看过很多类似的帖子,但不太明白这一点,谢谢。

最佳答案

一种方法是按 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")))

enter image description here

请注意,如果您希望每年使用不同的形状,则 shape 参数需要位于 aes() 中。

关于r - ggplot2 geom_line() 特定值之间的箭头方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55091262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com