J'essaie de tracer des points de données avec trois couleurs différentes pour trois plages de valeurs. Par exemple:
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec))
Ce qui précède produit:
Maintenant, je voudrais modifier ceci pour que les valeurs qseq <17 soient noires, les valeurs entre 17 et 19 soient jaunes et les valeurs supérieures à 19 soient rouges. J'ai essayé différentes approches, mais aucune ne semble fonctionner:
Extrait de ici
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) +
scale_fill_gradientn(colours=c("black","yellow","red"),
breaks=c(0,17,19), labels=format(c("0","17","19")))
Cela produit:
Ainsi, la barre de couleurs semble correcte mais les couleurs ne sont pas réellement appliquées.
Les solutions données dans carte thermique ggplot2 avec des couleurs pour les valeurs à distance semblent prometteuses mais je ne peux pas les faire fonctionner avec geom_point()
.
Il en va de même pour divers articles similaires, tels que ceux répertoriés dans la barre latérale.
Je me rends compte que je devrai probablement utiliser une sorte d'échelle discrète au lieu de scale_fill_gradientn
Mais mes tentatives d'utilisation de scale_color_manual()
échouent:
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(color = factor(qsec))) +
scale_color_manual(values=c("black", "yellow","red")
Error: Insufficient values in manual scale. 30 needed but only 4 provided.
Je suppose que je devrai en quelque sorte utiliser cut()
ou factor()
mais je n'arrive pas à comprendre comment. Aucune suggestion?
Vous devez cut
vos valeurs en intervalles:
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) +
geom_point(aes(colour = cut(qsec, c(-Inf, 17, 19, Inf))),
size = 5) +
scale_color_manual(name = "qsec",
values = c("(-Inf,17]" = "black",
"(17,19]" = "yellow",
"(19, Inf]" = "red"),
labels = c("<= 17", "17 < qsec <= 19", "> 19"))