J'ai une question sur les légendes dans ggplot2. J'ai réussi à tracer trois lignes dans le même graphique et je souhaite ajouter une légende avec les trois couleurs utilisées. C'est le code utilisé
library(ggplot2)
require(RCurl)
link<-getURL("https://dl.dropbox.com/s/ds5zp9jonznpuwb/dat.txt")
datos<- read.csv(textConnection(link),header=TRUE,sep=";")
datos$fecha <- as.POSIXct(datos[,1], format="%d/%m/%Y")
temp = ggplot(data=datos,aes(x=fecha, y=TempMax,colour="1")) +
geom_line(colour="red") + opts(title="TITULO") +
ylab("Temperatura (C)") + xlab(" ") +
scale_y_continuous(limits = c(-10,40)) +
geom_line(aes(x=fecha, y=TempMedia,colour="2"),colour="green") +
geom_line(aes(x=fecha, y=TempMin,colour="2"),colour="blue") +
scale_colour_manual(values=c("red","green","blue"))
temp
et la sortie
Je voudrais ajouter une légende avec les trois couleurs utilisées et le nom de la variable (TempMax, TempMedia et TempMin). j'ai essayé
scale_colour_manual
mais ne peut pas trouver le chemin exact.
Malheureusement, les données d'origine ont été supprimées du site lié et n'ont pas pu être récupérées. Mais ils provenaient de fichiers de données météo avec ce format
"date","Tmax","Tmin","Tmed","Precip.diaria","Wmax","Wmed"
2000-07-31 00:00:00,-1.7,-1.7,-1.7,-99.9,20.4,20.4
2000-08-01 00:00:00,22.9,19,21.11,-99.9,6.3,2.83
2000-08-03 00:00:00,24.8,12.3,19.23,-99.9,6.8,3.87
2000-08-04 00:00:00,20.3,9.4,14.4,-99.9,8.3,5.29
2000-08-08 00:00:00,25.7,14.4,19.5,-99.9,7.9,3.22
2000-08-09 00:00:00,29.8,16.2,22.14,-99.9,8.5,3.27
2000-08-10 00:00:00,30,17.8,23.5,-99.9,7.7,3.61
2000-08-11 00:00:00,27.5,17,22.68,-99.9,8.8,3.85
2000-08-12 00:00:00,24,13.3,17.32,-99.9,8.4,3.49
Réponses:
J'ai tendance à trouver que si je spécifie des couleurs individuelles dans plusieurs geom, je le fais mal. Voici comment je tracerais vos données:
Il ne reste qu'une simple commande ggplot:
Exemple de tracé
la source
Puisque @Etienne a demandé comment faire cela sans fondre les données (ce qui est en général la méthode préférée, mais je reconnais qu'il peut y avoir des cas où cela n'est pas possible), je présente l'alternative suivante.
Commencez par un sous-ensemble des données d'origine:
Vous pouvez obtenir l'effet souhaité en (et cela nettoie également le code de traçage d'origine):
L'idée est que chaque ligne reçoit une couleur en mappant l'
colour
esthétique à une chaîne constante. Le choix de la chaîne que vous souhaitez voir apparaître dans la légende est le plus simple. Le fait que dans ce cas il soit identique au nom de lay
variable tracée n'est pas significatif; il peut s'agir de n'importe quel ensemble de chaînes. Il est très important que ce soit à l'intérieur de l'aes
appel; vous créez un mappage vers cette "variable".scale_colour_manual
peut maintenant mapper ces chaînes aux couleurs appropriées. Le résultat estDans certains cas, le mappage entre les niveaux et les couleurs doit être rendu explicite en nommant les valeurs dans l'échelle manuelle (merci à @DaveRGP pour l'avoir signalé):
(donnant le même chiffre que précédemment). Avec des valeurs nommées, les sauts peuvent être utilisés pour définir l'ordre dans la légende et n'importe quel ordre peut être utilisé dans les valeurs.
la source
scale_colour_manual("", values = c("TempMax" = "red", "TempMedia" = "green", "TempMin" = "blue"))
où TempMax, TempMedia et TempMin sont spécifiés comme argument de couleur comme dans la réponse ci-dessus.J'aime beaucoup la solution proposée par @Brian Diggs. Cependant, dans mon cas, je crée les graphiques linéaires en boucle plutôt que de les donner explicitement car je ne sais pas a priori combien de parcelles je vais avoir. Lorsque j'ai essayé d'adapter le code de @ Brian, j'ai rencontré des problèmes pour gérer correctement les couleurs. Il s'est avéré que j'avais besoin de modifier les fonctions esthétiques. Au cas où quelqu'un aurait le même problème, voici le code qui a fonctionné pour moi.
J'ai utilisé le même cadre de données que @Brian:
Dans mon cas, je génère
my.cols
etmy.names
dynamiquement, mais je ne veux pas compliquer inutilement les choses donc je les donne explicitement ici. Ces trois lignes facilitent le classement de la légende et l'attribution des couleurs.Et voici l'intrigue:
la source
ggplot
attendue.