ggmap - stat_binhex 和 scale_fill_gradientn 限制
ggmap - stat_binhex and scale_fill_gradientn limits
我使用 ggmap 和 stat_binhex 来可视化给定区域中船只的密度。我不想显示所有位置,只显示我真正拥有高密度位置的位置。
所以我使用 "scale_fill_gradientn" 和 limits 参数来过滤所有少于 500 个位置的六边形。 limit 参数需要指定最低值和最高值。虽然最低值没问题,但我不想手动指定最高值(当前为 100000),而是从 "stat_binhex" 结果中获取它。你知道这是否可行吗?我该怎么做?
这是我当前的代码:
ggmap(map, extent = "panel", maprange=FALSE) +
coord_cartesian() +
theme(legend.position='none') +
geom_point(data=positions, aes(x=positions$x, y=positions$y), alpha=0.1, size=0.01, color="grey") +
stat_binhex(data=positions, aes(x,y), binwidth=c(0.05, 0.05)) +
scale_fill_gradientn( colours= brewer.pal( 6, "YlGn"),
na.value = NA, trans= "log10", limits=c(500,100000))
感谢您的帮助
阿尔诺
帮助页面 ?scale_fill_gradientn
指向 ?continuous_scale
,其中指出您可以使用 NA
(或 NA_real_
)作为您不想手动设置的限制.使用虚拟数据集:
完整代码如下:
library(ggmap)
library(RColorBrewer)
left <- -4.8
bottom <- 45.8
right <- -1.2
top <- 48.2
map <- get_stamenmap(c(left, bottom, right, top),
maptype = "toner", zoom = 8)
positions <- data.frame(x = rnorm(5e5, mean = -4, sd = 0.5),
y = rnorm(5e5, mean = 46.5, sd = 0.3))
positions <- positions[with(positions, x > left & x < right &
y > bottom & y < top), ]
print(ggmap(map, extent = "panel", maprange=FALSE) +
coord_cartesian() +
theme(legend.position="none") +
geom_point(data=positions, aes(x, y), alpha=0.1, size=0.01,
color="grey") +
stat_binhex(data=positions, aes(x, y), binwidth=c(0.05, 0.05)) +
scale_fill_gradientn(colours = brewer.pal( 6, "YlGn"),
na.value = NA, trans= "log10", limits = c(500, NA)))
我使用 ggmap 和 stat_binhex 来可视化给定区域中船只的密度。我不想显示所有位置,只显示我真正拥有高密度位置的位置。
所以我使用 "scale_fill_gradientn" 和 limits 参数来过滤所有少于 500 个位置的六边形。 limit 参数需要指定最低值和最高值。虽然最低值没问题,但我不想手动指定最高值(当前为 100000),而是从 "stat_binhex" 结果中获取它。你知道这是否可行吗?我该怎么做?
这是我当前的代码:
ggmap(map, extent = "panel", maprange=FALSE) +
coord_cartesian() +
theme(legend.position='none') +
geom_point(data=positions, aes(x=positions$x, y=positions$y), alpha=0.1, size=0.01, color="grey") +
stat_binhex(data=positions, aes(x,y), binwidth=c(0.05, 0.05)) +
scale_fill_gradientn( colours= brewer.pal( 6, "YlGn"),
na.value = NA, trans= "log10", limits=c(500,100000))
感谢您的帮助
阿尔诺
帮助页面 ?scale_fill_gradientn
指向 ?continuous_scale
,其中指出您可以使用 NA
(或 NA_real_
)作为您不想手动设置的限制.使用虚拟数据集:
完整代码如下:
library(ggmap)
library(RColorBrewer)
left <- -4.8
bottom <- 45.8
right <- -1.2
top <- 48.2
map <- get_stamenmap(c(left, bottom, right, top),
maptype = "toner", zoom = 8)
positions <- data.frame(x = rnorm(5e5, mean = -4, sd = 0.5),
y = rnorm(5e5, mean = 46.5, sd = 0.3))
positions <- positions[with(positions, x > left & x < right &
y > bottom & y < top), ]
print(ggmap(map, extent = "panel", maprange=FALSE) +
coord_cartesian() +
theme(legend.position="none") +
geom_point(data=positions, aes(x, y), alpha=0.1, size=0.01,
color="grey") +
stat_binhex(data=positions, aes(x, y), binwidth=c(0.05, 0.05)) +
scale_fill_gradientn(colours = brewer.pal( 6, "YlGn"),
na.value = NA, trans= "log10", limits = c(500, NA)))