GOOGLE ADS

lundi 18 avril 2022

Barplot dans Ggplot2 : couleur personnalisée automatiquement à l'aide de R en fonction de la valeur d'une colonne

Je veux que la couleur barplotsoit automatiquement remplie avec le chiffre minimum en RMSE column to be vert the nest to the minimumRMSE figures to bejaune vert the middle figure to bejaune , the second to the maximum RMSE to be orange while the maximum figure in the RMSE column to berouge ».

df1 <- data.frame(Methods = c('b', 'a', 'c', 'd', 'e'), lb = c(9, 7, 9, 4, 9), RMSE = c(0.26177952, 0.11294586, 0.02452239, 0.08290467, 0.41488542))
ggplot2::ggplot(df1, ggplot2::aes(Methods, lb, fill = RMSE)) + # Using default colors
ggplot2::geom_bar(stat = "identity")# + col = rainbow(5)

J'ai vu cela en ligne et j'imagine comment cela peut m'aider.

colfunc<-colorRampPalette(c("green", "yellowgreen", "yellow", "orange", "red"))
plot(rep(1,5),col=(colfunc(5)), pch=19,cex=2)


Solution du problème

Voici une option utilisant une palette ("Spectral" des schémas ColorBrewer intégrés à ggplot2) qui inclut par coïncidence un spectre de vert-jaune-orange-rouge. (Cela inclut également le bleu, que j'ai évité d'utiliser la values = c(-0.15,1)partie - qui indique en fait que les nombres doivent être inférieurs de 15% à la plage réelle à attribuer au bleu, de sorte qu'il ne commence pas à utiliser les couleurs avant la plage verte.

ggplot2::ggplot(df1, ggplot2::aes(Methods, lb, fill = RMSE)) + # Using default colors 
ggplot2::geom_bar(stat = "identity") +
ggplot2::scale_fill_distiller(palette = "Spectral", values = c(-0.15,1)))

entrez la description de l'image ici

Si vous souhaitez colorer en fonction du classement de RMSE plutôt que de la valeur de RMSE, vous pouvez en faire un facteur et utiliser les cinq couleurs par leur nom :

ggplot2::ggplot(df1, ggplot2::aes(Methods, lb, fill = as.factor(RMSE))) + # Using default colors 
ggplot2::geom_bar(stat = "identity") +
ggplot2::scale_fill_manual(values = c("green", "yellowgreen", "yellow", "orange", "red"))

entrez la description de l'image ici

(Esthétiquement, vous voudrez peut-être choisir d'autres couleurs en fonction de leurs valeurs hexadécimales, comme peut-être "# 70B070" au lieu de "vert" si vous préférez certaines couleurs spécifiques.)

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...