web-dev-qa-db-fra.com

Étiquetez la légende du gradient de remplissage à l'échelle minimale et maximale avec le texte: ggplot2

J'ai un complot créé dans ggplot2 qui utilise scale_fill_gradientn. Je voudrais ajouter du texte au minimum et au maximum de la légende de l'échelle. Par exemple, à l'affichage minimum de la légende "Minimum" et à l'affichage maximum de la légende "Maximum". Il existe des publications utilisant des remplissages discrets et ajoutant des étiquettes avec des nombres au lieu de texte (par exemple ici ), mais je ne sais pas comment utiliser la fonction labels avec scale_fill_gradientn pour insérer uniquement du texte aux min et max. À l'heure actuelle, je suis susceptible d'obtenir des erreurs:

Error in scale_labels.continuous(scale, breaks) : 
Breaks and labels are different lengths

Cette étiquette de texte est-elle possible dans ggplot2 pour ce type d'échelle/remplissage?

# The example code here produces an plot for illustrative purposes only.
# create data frame, from ggplot2 documentation
df <- expand.grid(x = 0:5, y = 0:5) 
df$z <- runif(nrow(df))

#plot
ggplot(df, aes(x, y, fill = z)) + geom_raster() + 
scale_fill_gradientn(colours=topo.colors(7),na.value = "transparent")
18
nofunsally

Pour scale_fill_gradientn(), vous devez fournir les deux arguments: breaks= et labels= de même longueur. Avec l'argument limits= vous étendez la barre de couleurs à la valeur minimale et maximale dont vous avez besoin.

ggplot(df, aes(x, y, fill = z)) + geom_raster() + 
      scale_fill_gradientn(colours=topo.colors(7),na.value = "transparent",
                           breaks=c(0,0.5,1),labels=c("Minimum",0.5,"Maximum"),
                           limits=c(0,1))

enter image description here

36
Didzis Elferts