2016-05-12 5 views
2

Je suis en train de tracer une carte de prédiction d'espèce dans ggplot en utilisant une trame de données de pixels spatiaux. J'ai l'intrigue à peu près comme je le veux, le seul problème est que mon échelle de raster passe du blanc au rouge et donc il est difficile de voir où il commence dans la légende see the plot. Je veux dessiner une boîte pour tracer le contour de la légende - juste la barre allant du blanc au rouge, pas le reste. Je cherche depuis plus d'une heure mais je ne trouve aucun moyen de le faire, seulement des façons de donner un arrière-plan à la légende ou de dessiner une boîte autour du texte et de la barre de légende, ce que je ne veux pas faire. Est-ce que quelqu'un sait si c'est possible de faire dans ggplot ou dois-je changer mon gradient de couleur?tracer une boîte autour d'une clé raster

Merci!

Mon code traçante:

ggplot() + 
    geom_raster(data=habs_pop_clip1, aes(x = easting.x, y = northing.x, fill = pred)) + 
    scale_fill_gradient("Probability of occurrence", low="white", high="red",limits = c(0,1)) + 
    coord_fixed(ratio=1, xlim=c(545000, 654000), ylim=c(278000,347000))+ 
    geom_polygon(data=Norfolk1, aes(x=long, y=lat, Group=group), color="grey",fill=NA)+ 
    theme(text = element_text(family = "serif")) + 
    geom_segment(aes(x = 550000, y = 278500, xend = 560000, yend = 278500), lineend = "round") + 
    annotate("text", x = 555000, xend = 555000, y = 282000, yend = 282000, label = "10 km", family = "serif", size = 4) + 
    ggtitle(colnames(bat_occ[i+7])) + 
    theme(plot.margin=unit(c(0.5, 0.5, 0.5, 0.5), "cm")) + 
    theme_bw() + 
    theme(axis.line = element_line(colour = "black"), 
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     panel.border = element_blank(), 
     panel.background = element_blank(), 
     axis.line=element_blank(), 
     axis.ticks=element_blank(), 
     axis.title.x=element_blank(), 
     axis.title.y=element_blank(), 
     axis.text =element_blank()) 

Répondre

2

Je ne sais pas s'il y a un paramètre intégré. Sinon, vous pouvez ajouter un rectangle manuellement,

df <- reshape2::melt(outer(1:4, 1:4), varnames = c("X1", "X2")) 

p <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))+ scale_fill_continuous(guide = "colorbar") 


g <- ggplotGrob(p) 
g$grobs[[8]][[1]][[1]] <- gtable::gtable_add_grob(g$grobs[[8]][[1]][[1]], 
                rectGrob(gp=gpar(fill=NA, lwd=5)), 4, 2) 
grid.newpage() 
grid.draw(g) 

enter image description here

+0

Incroyable! Je vous remercie! Cela fait exactement ce que je veux. –