我正在尝试使用ggplot2中的geom_path来显示鸟类的运动,其中每只鸟类都有自己的路径。我想展示每条鸟类路径随时间变化的方式(即,路径的起点颜色较深,路径的末端较亮,反之亦然)。
到目前为止,我已经能够使用geom_path为每只鸟使用不同的彩色线条。但是,我似乎无法逐渐褪色或出现其他颜色变化以显示时间进度。
以下是我的数据示例:
datexample <- data.frame(
"site" = c("A","B", "A", "B"),
"bird" = c("1A","2A"),
"week" = c(28, 28, 29, 29),
"lat" = c(45.25, 44.75, 45.25, 45.75),
"lon" = c(-61.75, -61.25, -62.75, -62.25)
)
datexample
这是该图的代码示例:
p = ggplot() +
geom_path(data = datexample, aes(x = lon, y = lat, colour=bird))+
coord_sf(crs = 4326, xlim = c(-58, -69), ylim = c(40, 48))+
xlab("Longitude")+
ylab("Latitude")+
labs(color='Bird ID')
p
从本质上讲,我希望能够显示出在整个采样周中鸟类移动的路径(即哪个点排在第一,第二等)
我是R的新手,所以我们将不胜感激!
答案 0 :(得分:1)
您可以通过几种方法在geom_path
上指示方向。
一种可能是使用ggforce::geom_link2
代替ggplot2::geom_path
,从而允许沿路径的长度逐渐着色。在这里,我添加了一个“ progress”变量,该变量显示了每只鸟沿着其总路径的距离,然后将其映射到alpha(透明度)。 geom_link2
在路径内创建细分,以允许在路径的每个分段内逐渐消失。
library(dplyr)
p = ggplot() +
ggforce::geom_link2(data = datexample %>%
group_by(bird, site) %>%
mutate(progress = row_number()/n()),
aes(x = lon, y = lat, colour=bird, alpha = progress))+
coord_sf(crs = 4326, xlim = c(-58, -69), ylim = c(40, 48))+
xlab("Longitude")+
ylab("Latitude")+
labs(color='Bird ID')
p
或者,您可以添加箭头:
p = ggplot() +
geom_path(data = datexample,
aes(x = lon, y = lat, colour=bird),
arrow = arrow(type = "closed", length = unit(0.03, "npc")))+
coord_sf(crs = 4326, xlim = c(-58, -69), ylim = c(40, 48))+
xlab("Longitude")+
ylab("Latitude")+
labs(color='Bird ID')
p