2016-02-22 1 views
0

J'utilise ggmap et stat_binhex pour visualiser la densité du bateau dans une zone donnée. Je ne veux pas afficher toutes les positions, seulement celles où j'ai vraiment une forte densité de positions.ggmap - stat_binhex et scale_fill_gradientn limites

enter image description here

donc j'utiliser « scale_fill_gradientn » avec le paramètre limite pour filtrer tous l'hexagone qui ont moins de 500 positions. Le paramètre limite doit spécifier la valeur la plus basse et la plus élevée. Bien que ce soit correct pour la valeur la plus basse, je ne veux pas spécifier manuellement la valeur la plus élevée (actuellement 100000) mais la récupérer à partir du résultat de "stat_binhex". Savez-vous si c'est possible et comment je peux le faire?

Voici mon code actuel:

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)) 

Merci pour votre aide

Arnaud

+0

Serez-vous capable de fournir un ensemble minimal de données? – jazzurro

Répondre

0

La page d'aide ?scale_fill_gradientn points ?continuous_scale qui stipule que vous pouvez utiliser NA (ou NA_real_) pour la limite que vous ne voulez pas définir manuellement. Avec un ensemble de données fictives:

high density bins visualized

Voici le code complet:

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)))