GGR地图中心位于经度180度左右
我正在使用R ang ggmap(见下面的示例)映射位于经度180度左右的点。 地图大部分是空的。有没有办法使地图以经度=180为中心,并限制点的范围? 换句话说,我感兴趣的是将x轴上的范围限制在180±14度GGR地图中心位于经度180度左右,r,ggmap,R,Ggmap,我正在使用R ang ggmap(见下面的示例)映射位于经度180度左右的点。 地图大部分是空的。有没有办法使地图以经度=180为中心,并限制点的范围? 换句话说,我感兴趣的是将x轴上的范围限制在180±14度 library("ggmap") x <- structure(list(Bias = structure(c(5L, 4L, 3L, 3L, 4L, 6L, 6L, 3L, 3L, 4L, 3L, 5
library("ggmap")
x <- structure(list(Bias = structure(c(5L, 4L, 3L, 3L, 4L, 6L, 6L,
3L, 3L, 4L, 3L, 5L, 2L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L,
6L, 5L, 4L, 3L, 6L, 5L, 4L,
5L, 4L, 4L, 3L, 6L, 4L, 6L,
4L, 5L, 4L, 4L, 4L, 3L, 3L,
4L, 2L, 4L, 3L, 3L, 6L, 4L,
5L),
.Label = c("(-Inf,-5]",
"(-5,-2]",
"(-2,0]",
"(0,2]",
"(2,5]",
"(5, Inf]"),
class = "factor"),
lat = c(-1.35, -13.24, -14.31, -16.13, -17.15,
-17.35, -17.75, -18.05, -18.23, -20.67,
-29.24, -34.43, -35.13, -35.9, -37.01,
-37.56, -37.67, -38.66, -38.74, -39.01,
-39.45, -39.47, -40.32, -40.54, -40.9,
-40.9, -41.3, -41.33, -41.73, -41.74,
-42.42, -42.71, -43.49, -44.3, -45.02,
-45.22, -45.93, -46.16, -46.41, -47.28,
-50.49, -52.55, -43.86, -18.15, -12.5,
-19.05, -52.55, -44.53, -38.17, -17.23),
lon = c(176, -176.19, -178.12, -179.98, 176.9,
178.22, 177.45, 178.57, -178.8, -178.72,
-177.93, 172.68, 174.02, 175.12, 174.81,
178.31, 176.2, 177.99, 176.08, 174.18,
175.66, 176.86, 175.61, 173, 174.99,
176.21, 173.22, 174.81, 174.28, 171.58,
173.7, 170.98, 172.53, 171.22, 168.74,
166.88, 170.2, 166.61, 168.32, 167.46,
166.3, 169.15, 169.01, 177.42, 177.05,
178.17, 169.13, 169.89, 174.7, -178.95)),
.Names = c("Bias", "lat", "lon"),
class = "data.frame",
row.names = c(NA, -50L))
# Map extent
xy <- c(left = min(x$lon), bottom = min(x$lat),
right = max(x$lon), top = max(x$lat))
# Download the base map
gg <- get_stamenmap(xy, zoom = 5, maptype = "toner-lite")
ggmap(gg) +
geom_point(data = x, aes(x = lon, y = lat, col = Bias),
size = 1, alpha = 0.9) +
scale_color_viridis(discrete = T)
库(“ggmap”)
x无法理解如何使用ggmap执行此操作。
但是,下面是使用ggplot和maps包(此处代码的修改版本:)的解决方案
库(地图)
图书馆(GG2)
#x是问题中定义的data.frame
#重新居中点
中心
这更多的是关于雄蕊和数据结构的问题,而不是其他任何问题。谷歌地图和一些数据争论都没有问题
代码:
如果你检查上面原始地图的边界,你会发现我们总共有450度经度(44.64844+405.35156)可以使用。因此,我们可以将地图缩小到lon=c(0,360)
和lat=c(-70,70)
(分别使用scale\u x\u continuous
和scale\u y\u continuous
),这将使中心点恰好位于lon=180
和lat=0
但是,您的数据使用了正确的经度值0:-180(西)
和0:180(东)
。因此,我们还需要将0:360系统中低于零的经度值更新为相应的值。这是通过180+180+lon
实现的(因此经度=-172
将变为经度=188
,以便绘图)
可视化:
这里有一个输入错误:经度=180。这不是纬度吗?经度是正确的,我想把x轴上的范围限制在180±14英寸,你可以使用+coord_fixed(xlim=c(value1,value2))
控制x轴。然而,将左右两边的点粘在一起要完成有点困难。也许这条线有帮助:当你说180±14时,你想看到x轴上的166,…,180,-1,…,-14吗?或者166,…,194也可以接受吗?理想情况下,我希望在x轴上看到166,…,180,-180…-170。这是为了与其他地图保持一致。我想我也可以绘制166-194范围,然后更改x轴上的标签,关于如何使用get_stamenmap实现这一点,有什么建议吗?谢谢您的详细解释。不幸的是,我不被允许使用谷歌地图。雄蕊有什么问题?雄蕊想要一个最小经度<最大经度(值范围为-180到+180)的边界框。我知道,使用当前的API/调用方法,您不可能不需要将内容缝合在一起就可以实现所需的功能。
library(maps)
library(ggplot2)
# x is the data.frame defined in the question
# Recenter points
center <- 180
# shift coordinates to recenter x
x$long.recenter <- ifelse(x$lon < center - 180 , x$lon + 360, x$lon)
# shift coordinates to recenter worldmap
worldmap <- map_data ("world", wrap = c(0, 360))
# Plot worldmap using data from worldmap.cp
ggplot(aes(x = long, y = lat), data = worldmap) +
geom_polygon(aes(group = group), fill="#f9f9f9", colour = "grey65") +
scale_y_continuous(limits = c(-60, 0)) +
scale_x_continuous(limits = c(180 - 20, 180 + 15),
breaks = seq(160, 190, 10),
labels = c(160, 170, "180/-180", -170)) +
coord_equal() + theme_bw() +
geom_point(data = x,
aes(x = long.recenter, y = lat, col = Bias),
pch = 19, size = 3, alpha = .4) +
xlab("Longitude") + ylab("Latitude")
# Using your data as basis
x[x$lon < 0, ]$lon <- 2*180 + x[x$lon < 0, ]$lon
# Get map with lon center opposite the Meridian
g <- ggmap(get_googlemap(c(180, 0), zoom = 1), extent = "panel")
# Plot map with boundaries
g + scale_x_continuous(limits = c(0, 360), expand = c(0,0)) +
scale_y_continuous(limits = c(-70, 70), expand = c(0,0)) +
# Plot data points
geom_point(data = x, aes(x = lon, y = lat, color = Bias),
size = 1, alpha = 0.9) +
# Add custom color scheme
scale_color_viridis(discrete = T)
> g$data
lon lat
1 -44.64844 -87.75631
2 405.35156 -87.75631
3 -44.64844 87.72862
4 405.35156 87.72862