gpt4 book ai didi

r - 在 R : labelling points and scale 中使用 ggmap 和雄蕊图进行映射

转载 作者:行者123 更新时间:2023-12-04 01:24:50 26 4
gpt4 key购买 nike

我正在尝试使用 ggmap 和雄蕊 map 制作我的研究地点的 map 。我已经看到了一些类似的问题,但还没有想出一种方法来将解决方案纳入我的雄蕊 map 代码中。

关于这个我有两个问题:
1. 如何在 map 上自定义标注点?
2. 如何在雄蕊 map 中为 map 添加比例尺? (无论是指示距离的线还是 map 上的 x cm = 现实生活中的 y km)

Tcoords <- read.csv("Tcoords.csv")

我的文件看起来像这样
# trap latitude longitude
1 52.34431 0.5374620
2 52.34281 0.5382080
3 52.34468 0.5406787
4 52.34357 0.5398280
5 52.34431 0.5397050
6 52.34516 0.5406294

作为对建议的回应,我已将结果粘贴到 dput(head(Tcoords)) 此处:
 structure(list(trap = c("1", "2", "3", "4", "5", "6"), latitude = c(52.344312, 
52.342809, 52.3446849, 52.343572, 52.34431, 52.3451601), longitude = c(0.537462,
0.538208, 0.5406787, 0.539828, 0.539705, 0.5406294)), row.names = c(NA,
6L), class = "data.frame")

这是我用来绘制我的点的代码
center = c(lon = 0.5406294, lat = 52.3451601)
qmap(center, zoom = 16, source = "stamen", maptype = "watercolor")+
geom_point(aes(x = longitude, y = latitude), size = 4, shape = 21,
fill = "dark green", data = Tcoords)

但是不知何故陷阱没有被识别为对象。这可能是基本的东西,但我不确定我错过了什么(R 新手)。我在这里将“陷阱”保存为文本对象。

谢谢你的帮助!

最佳答案

将标签放到 map 上只是在 geom_text() 中重新定义数据源的问题。功能。
为了在 map 上打印比例尺,需要遵循以下问题中的解决方案:Is there a way to add a scale bar (for linear distances) to ggmap?

#get base map
map.base <- get_map(location = center, zoom = 16, source = "stamen", maptype = "watercolor") # could also use zoom = "auto"
#get extent of base map
bb <- attr(map.base,"bb")

#define the location and length of scale bar
sbar <- data.frame(lon.start = c(bb$ll.lon + 0.1*(bb$ur.lon - bb$ll.lon)),
lon.end = c(bb$ll.lon + 0.25*(bb$ur.lon - bb$ll.lon)),
lat.start = c(bb$ll.lat + 0.1*(bb$ur.lat - bb$ll.lat)),
lat.end = c(bb$ll.lat + 0.1*(bb$ur.lat - bb$ll.lat)))

#Calculate distance in meters
library(geosphere)
sbar$distance = distGeo(c(sbar$lon.start,sbar$lat.start), c(sbar$lon.end,sbar$lat.end))

map.scale <- ggmap(map.base, extent="device") +
geom_point(aes(x = longitude, y = latitude), size = 4, shape = 21, fill = "dark green", data = Tcoords) +
geom_text(data=Tcoords, aes(label=trap, x = longitude, y = latitude), nudge_x = 0.0001, nudge_y = 0.0001, color="black") +

geom_segment(data = sbar, aes(x = lon.start, xend = lon.end, y = lat.start, yend = lat.end)) +
geom_text(data = sbar, aes(x = (lon.start + lon.end)/2,
y = lat.start + 0.025*(bb$ur.lat - bb$ll.lat),
label = paste(format(distance, digits = 4, nsmall = 2), 'm')),
hjust = 0.5, vjust = 0)
map.scale

enter image description here

可能需要调整 geom_text() 中的 nudge_x & _y用于正确放置标签的功能。

关于r - 在 R : labelling points and scale 中使用 ggmap 和雄蕊图进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62091163/

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