/ / Jak tworzyć niestandardowe legendy w ggplot2? - r, ggplot2

Jak tworzyć niestandardowe legendy w ggplot2? - r, ggplot2

Próbuję uzyskać legendę w ggplot2, która wyświetli etykietę i kolor moich danych za pomocą tego kodu:

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)

W tym momencie valueVector = c ("czerwony", "niebieski", "zielony", "czarny"),

breakVector = c ("front", "rear", "kms", "VanKilled"),

i p tworzy wykres, w którym front = czerwony, tył = zielony, kms = niebieski, a VanKilled = czarny.

Jak widać kolejność wartości zostałaprzetasowane, a następnie kolory nie są tym, co próbowałem ustawić jako. Nie mogę znaleźć żadnych rymów ani powodów do tego, wydaje się być inny za każdym razem, gdy robię nowy wykres. Czy ktoś wie, jak to naprawić?

Odpowiedzi:

2 dla odpowiedzi № 1

Zmieniasz to w niewłaściwy sposób: ggplot2 używa frameworka do tworzenia grafiki, która wymaga pewnej znajomości, powinieneś przeczytać kilka wstępnych materiałów. Oto podstawowy pomysł na twój przykład,

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()