在R中的地图上添加箭头和标记

在R中的地图上添加箭头和标记,r,ggplot2,rgooglemaps,R,Ggplot2,Rgooglemaps,我使用R的ggplot2包制作了一张地图,并在地图上可视化了一条几何路径。现在,我想添加几个标记和一个箭头,以显示路径的方向。对于arrows,有一个名为grid的包,它有arrow()函数,但如果我在geom_路径美学中使用此函数,它将为路径的每个点绘制箭头。所以,我只想画一个箭头(只有一个箭头),以便可视化路径的方向。 第二个问题是如何在我的地图上添加一些标记。我读到有一个很好的包RGoogleMaps,它允许这样做,但问题是我使用的是ggplot2。 知道如何在地图上添加箭头和标记吗? 提

我使用R的ggplot2包制作了一张地图,并在地图上可视化了一条几何路径。现在,我想添加几个标记和一个箭头,以显示路径的方向。对于arrows,有一个名为grid的包,它有arrow()函数,但如果我在geom_路径美学中使用此函数,它将为路径的每个点绘制箭头。所以,我只想画一个箭头(只有一个箭头),以便可视化路径的方向。 第二个问题是如何在我的地图上添加一些标记。我读到有一个很好的包RGoogleMaps,它允许这样做,但问题是我使用的是ggplot2。 知道如何在地图上添加箭头和标记吗? 提前谢谢

这是我的密码:

require(move)
require(ggmap)
require(mapproj)
gps <- move(x=temp$GPS_x, y=temp$GPS_y,time=as.POSIXct(temp$GPS_timeDate,        format="%d/%m/%Y %H:%M:%S", tz="UTC"), proj=CRS("+proj=longlat +ellps=WGS84"), animal='unknown', sensor='NoName')
gps_df <- as(gps, "data.frame")
m <- get_map(bbox(extent(gps)*1.1), source="osm", zoom=14)
ggmap(m)+geom_path(data=gps_df[1:nrow(soc_long),], aes(x=temp$GPS_x[1:nrow(soc_long)],    y=temp$GPS_y[1:nrow(soc_long)],colour=soc_long$dsoc),size=1.5,lineend="round")+scale_color_gradient(low='green',high='red')
soc_long数据集的值用于颜色渐变:

    dsoc
1   0.348334562
2   0.348334562
3   0.348334562
4   0.348334562
5   0.348334562
6   0.348334562
7   0.348334562
8   0.348334562
9   0.348334562
10  0.348334562
11  0.367477325
12  0.367477325
13  0.367477325
14  0.367477325
15  0.367477325
16  0.367477325
17  0.367477325
18  0.367477325
19  0.367477325
20  0.367477325
21  0.248041791
22  0.248041791
23  0.248041791
24  0.248041791
25  0.248041791
26  0.248041791
27  0.248041791
28  0.248041791
29  0.248041791
30  0.248041791
最后,以下品脱是我想添加为路径标记的点:

lat           lon
54.31545667 10.168515
54.30135833 10.14450333
54.30305167 10.137645
54.3072 10.13840667
54.31827833 10.13377
54.32098833 10.12690667
54.32025833 10.12314
54.31826833 10.12340333
54.31540667 10.12799167
54.31492167 10.13006833

您可以将数据提供给各个绘图功能(您需要确保全局美学(ggplot、ggmap等中提到的)匹配。因此您有数据帧。第一个是gps_df[1:nrow(soc_long),],第二个是(称为标记)标记的lat和lon。此列表没有方向信息。因此,您需要通过向上移动列来计算方向信息

markers$lat.after<-c(markers$lat[-1],NA)
markers$lon.after<-c(markers$lon[-1],NA)
markers$lat.dir<-with(markers,lat.after-lat)
markers$lon.dir<-with(markers,lon.after-lon)
这对于箭头方向来说可能太粗糙了,因此您可以对gps_df字段执行相同的操作,然后只绘制其中的一部分

+geom_segment(data=gps_df[seq(1,nrow(gps_df),5),...

它只会将每5个点绘制为一个箭头

有一个数据集可以使用,这很有用:看起来就像添加arrow=arrow()默认为把箭头放在你的路径的末端,正如你希望的那样。如果你想把它放在中间,考虑将你的路径细分,并把它添加为一个层。如果你有一个带有标记的第二个数据集,那么把它加载到GeoMyPooPosit()中。并将其添加到现有绘图中。很抱歉,没有工作示例,没有太多帮助。我编辑了文章!因此,当我在geom_path()中添加arrow()函数时,将为每个点添加一个箭头,但我只希望在路径末尾添加一个箭头。谢谢!有机会获得至少一部分(或a)的箭头吗可以重新创建问题的数据集?已更新!我还尝试添加了arrow函数,但仍然得到路径上每个点的arrow。
+geom_segment(data=markers,aes(x=lon,xend=lon.after,y=lat,yend=lat.after),arrow=arrow(length=unit(0.3,"cm")))
+geom_segment(data=gps_df[seq(1,nrow(gps_df),5),...