/ / Comment faites-vous des légendes personnalisées dans ggplot2? - r, ggplot2

Comment faites-vous des légendes personnalisées dans ggplot2? - r, ggplot2

J'essaie d'obtenir une légende dans ggplot2 qui affichera l'étiquette et la couleur de mes données avec ce code:

valueVector <- vector()
breakVector <- vector()
foo <- as.data.frame(Seatbelts)
p <- ggplot(foo, aes(x=drivers, y=DriversKilled))
p <- p + geom_line(aes(y = front, colour = "front"), size = .5)
valueVector <- c(valueVector,"red")
breakVector <- c(breakVector,"front")
p <- p + geom_line(aes(y = rear, colour = "rear"), size = .5)
valueVector <- c(valueVector,"blue")
breakVector <- c(breakVector,"rear")
p <- p + geom_line(aes(y = kms/100, colour = "kms"), size = .5)
valueVector <- c(valueVector,"green")
breakVector <- c(breakVector,"kms")
p <- p + geom_line(aes(y = VanKilled, colour = "VanKilled"), size = .5)
valueVector <- c(valueVector,"black")
breakVector <- c(breakVector,"VanKilled")
p <- p + scale_colour_manual("", values = valueVector, breaks = breakVector)

À ce stade, valueVector = c ("rouge", "bleu", "vert", "noir"),

breakVector = c ("avant", "arrière", "kms", "VanKilled"),

et p crée un graphique où front = rouge, arrière = vert, kms = bleu et VanKilled = noir.

Comme vous pouvez voir l'ordre des valeurs a étémélangés, et par la suite les couleurs ne sont pas "ce que j'ai essayé de les définir comme. Je ne peux pas trouver de rime ou de raison à cela, il semble être différent chaque fois que je fais un nouveau graphique. Est-ce que quelqu'un sait comment réparer ceci?

Réponses:

2 pour la réponse № 1

Vous vous trompez à ce sujet. Ggplot2 utilise un cadre pour créer des graphiques, ce qui demande un peu de familiarité. Vous devriez lire des documents d’introduction. Voici l’idée de base de votre exemple.

d <- data.frame(Seatbelts)
d$kms <- d$kms/100

require(reshape2) # to transform the data into long format
m <- melt(d, meas = c("front", "rear", "kms", "VanKilled"))

# now we map the variables to aesthetic parameters
ggplot(m, aes(drivers, value, colour=variable)) +
geom_line()