gpt4 book ai didi

r - 使用 ggmap 设置背景 map 的不透明度

转载 作者:行者123 更新时间:2023-12-04 15:08:59 24 4
gpt4 key购买 nike

ggmapggplot和下面的代码......(不可重现,但恕我直言没有必要理解这个问题)。

map <- get_googlemap(center = c(lon = 10.64, lat = 50.56), maptype = "terrain", source = "google", zoom = 6, language = "de-DE", color = "bw")

ggmap(map) +
geom_point(data = frage_3_daten, aes(x = lng_google, y = lat_google, colour = pronunciation_id), alpha = 0.2) +
scale_colour_hue(name = "Aussprache", labels = c("Krampus", "Grittibänz")) +
ggtitle("Gebäck in Form einer menschlichen Gestalt") +
xlab("Länge") + ylab("Breite") +
theme_srf()

我可以在讲德语的欧洲顶部制作这张漂亮的点 map 。

enter image description here

现在 :我唯一(希望很简单)的问题是:如何降低背景层的不透明度,使点变得更重要?

我通过设置 darken 管理了以下“黑客”参数: ggmap(map, darken = c(0.6, "white")) .

enter image description here

这几乎解决了我的问题,但也许实际上有一个(隐藏的)选项可以全局降低第一个 map 图层(或更一般地说,图中任何图层)的不透明度。

最佳答案

如果您不想调整 darken参数,并且您不想深入研究 Google map 的自定义样式,您可以修改 ggmap直接对象。
ggmap本质上是一个字符矩阵,其中每个单元格是要在那里再现的颜色的十六进制代码。 (还有一些额外的属性描述了 ggmap 左下角和右上角点的经纬度(在 EPSG:4326 坐标引用系统中),以及源和缩放级别。)

您可以使用 adjustcolor()基础函数 R取一种颜色(作为十六进制代码、整数或字符串——col2rgb() 函数可以接受的任何内容)并向上或向下拨动红色、绿色、蓝色和 alpha channel 。 Alpha channel 控制透明度,其中 1 表示完全不透明,0 表示完全透明。

这是一个可重现的例子......

首先,获取meuse数据,随 sp 一起提供包裹。

data(meuse)

将数据帧转换为 sp对象,为其分配正确的坐标引用系统(我找到了 here ),然后将其坐标引用系统转换为经度/纬度。
coordinates(meuse) = ~x+y
proj4string(meuse) <- "+init=epsg:28992 +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.4171,50.3319,465.5524,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725 +units=m +no_defs"
meuse <- spTransform(meuse, CRS("+init=epsg:4326"))

使用所有点的近似中心获取谷歌 basemap 。我使用与您相同的其他参数,但将缩放设置得更高,因为这些点彼此非常接近。
meuse_basemap <- get_map(location = colMeans(coordinates(meuse)), 
maptype = "terrain",
source = "google",
zoom = 13,
language = "de-DE",
color = "bw")

这是我修改 ggmap 的地方使其透明。我将属性保存为对象,以便可以将相同的属性重新分配给更透明的 ggmap .我找不到只修改 ggmap 值的方法到位无需剥离 ggmap属性(这意味着修改后的 ggmap 不适用于 ggmap() 函数)。
meuse_basemap_attributes <- attributes(meuse_basemap)

创建一个与 Google basemap 尺寸相同的矩阵,但每个单元格中的所有颜色十六进制代码都调整为透明度的一半。
meuse_basemap_transparent <- matrix(adjustcolor(meuse_basemap, 
alpha.f = 0.5),
nrow = nrow(meuse_basemap))

将保存的属性分配给修改后的矩阵以将其变回可用 ggmap .
attributes(meuse_basemap_transparent) <- meuse_basemap_attributes

这是原始情节:
ggmap(meuse_basemap) +
geom_point(data = as.data.frame(meuse),
aes(x = x, y = y, color = dist),
cex = 2)

original ggmap

这是更透明的!
ggmap(meuse_basemap_transparent) +
geom_point(data = as.data.frame(meuse),
aes(x = x, y = y, color = dist),
cex = 2)

more transparent ggmap

关于r - 使用 ggmap 设置背景 map 的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126102/

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