我试图用R绘制我的坐标.我已经尝试过跟随不同的帖子(R:在世界地图上绘制分组坐标 ; 在R中的谷歌地图绘制多个点的坐标)但我的数据并没有太大成功.
我正在尝试使用我的gps坐标作为彩色圆点(每个区域为特定颜色)来获得世界的平面地图:
area lat long
Agullhas -38,31 40,96
Polar -57,59 76,51
Tasmanian -39,47 108,93
library(RgoogleMaps)
lat <- c(-38.31, -35.50) #define our map's ylim
lon <- c(40.96,37.50) #define our map's xlim
center = c(mean(lat), mean(lon)) #tell what point to center on
zoom <- 2 #zoom: 1 = furthest out (entire globe), larger numbers = closer in
terrmap <- GetMap(center=center, zoom=zoom, maptype= "satallite", destfile = "satallite.png")
Run Code Online (Sandbox Code Playgroud)
问题,现在我不知道如何添加我的点,我想为每个区域一种颜色.
谁能帮助我继续前进呢?
我尝试过的另一个选择是:
library(maps)
library(mapdata)
library(maptools)
map(database= "world", ylim=c(-38.31, -35.5), xlim=c(40.96, 37.5), …Run Code Online (Sandbox Code Playgroud) 我将maps包中的世界地图叠加到ggplot2栅格几何体上.但是,此栅格不是以本初子午线(0度)为中心,而是以180度(大致为白令海和太平洋)为中心.以下代码获取地图并在180度上重新定位地图:
require(maps)
world_map = data.frame(map(plot=FALSE)[c("x","y")])
names(world_map) = c("lon","lat")
world_map = within(world_map, {
lon = ifelse(lon < 0, lon + 360, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()
Run Code Online (Sandbox Code Playgroud)
产生以下输出:

很明显,在主子午线的一端或另一端的多边形之间存在线条.我目前的解决方案是用NA替换接近本初子午线的点,将within上面的调用替换为:
world_map = within(world_map, {
lon = ifelse(lon < 0, lon + 360, lon)
lon = ifelse((lon < 1) | (lon > 359), NA, lon)
})
ggplot(aes(x = lon, y = lat), data = world_map) + geom_path()
Run Code Online (Sandbox Code Playgroud)
这导致了正确的图像.我现在有一些问题:
orientation …我正在使用R maps包在世界地图上绘制一些点,例如:

绘制基本地图的命令是:
map("world", fill=TRUE, col="white", bg="gray", ylim=c(-60, 90), mar=c(0,0,0,0))
Run Code Online (Sandbox Code Playgroud)
但我需要显示太平洋中心地图.我使用map("world2",etc来使用maps包中的太平洋中心底图,并将我的dataframe(df)中数据点的坐标转换为:
df$longitude[df$longitude < 0] = df$longitude[df$longitude < 0] + 360
Run Code Online (Sandbox Code Playgroud)
如果我不使用该fill选项,但是使用fill交叉0°的多边形会导致问题.

我想我需要以maps某种方式从库中转换多边形数据来对其进行排序,但我不知道如何解决这个问题.
我理想的解决方案是绘制一个左边界为-20°,右边界为-30°(即330°)的地图.以下内容将正确的点和海岸线放到地图上,但是交叉零问题是相同的
df$longitude[df$longitude < -20] = df$longitude[d$longitude < -20] + 360
map("world", fill=TRUE, col="white", bg="gray", mar=c(0,0,0,0),
ylim=c(-60, 90), xlim=c(-20, 330))
map("world2", add=TRUE, col="white", bg="gray", fill=TRUE, xlim=c(180, 330))
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.