R语言 将gghighlight与ggmap一起使用

kqlmhetl  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(146)

我可以使用下面的代码使用ggmap来制作Map,但是如果我尝试使用gghighlight,我会得到一个错误。是否可以将gghighlight与ggmap一起使用?

library(ggmap)

hdf <- get_map("houston, texas")

mu <- c(-95.3632715, 29.7632836); nDataSets <- sample(4:10,1)
chkpts <- NULL
for(k in 1:nDataSets){
  a <- rnorm(2); b <- rnorm(2);
  si <- 1/3000 * (outer(a,a) + outer(b,b))
  chkpts <- rbind(
    chkpts,
    cbind(MASS::mvrnorm(rpois(1,50), jitter(mu, .01), si), k)
  )
}
chkpts <- data.frame(chkpts)
names(chkpts) <- c("lon", "lat","class")

ggmap(hdf, extent = "normal") +
  geom_point(aes(x = lon, y = lat, colour = class), data = chkpts, alpha = .5) -> 
  my_plot

my_plot

library(gghighlight)

my_plot +
    gghighlight(class > 3, aes(x = lon, y = lat, colour = class), data = chkpts)

# Error in `check_bad_predicates()`:
# ! Did you mistype some argument name? Or, did you mean `==`?: data = chkpts
# Backtrace:
#  1. gghighlight::gghighlight(...)
#  2. gghighlight:::check_bad_predicates(predicates)
j2datikz

j2datikz1#

我很少使用gghighlight,但我怀疑它是在比较过滤条件与基础层中的数据源。颠倒顺序,使chkpts数据集位于ggplot()中,并在稍后添加ggmap对象,这对我来说是有效的:

my_plot_reversed <- ggplot(chkpts, aes(x = lon, y = lat, colour = class)) +
  inset_ggmap(hdf) +
  geom_point(alpha = 0.5, size = 5) +
  coord_map(xlim = with(attr(hdf, "bb"), c(ll.lon, ur.lon)),
            ylim = with(attr(hdf, "bb"), c(ll.lat, ur.lat)))

my_plot
my_plot_reversed
# both look the same

my_plot_reversed + gghighlight(class > 3)
# but this works with gghighlight

注意:coord_map的帮助文件提到它已经被coord_sf取代,但值得一提的是,ggmap版本仍然使用coord_map,当我尝试使用coord_sf时,两个图之间有明显的差异。因此,我坚持使用coord_map

相关问题