Powiedzmy mam działkę jak tenJak połączyć AES() i aes_string() Opcje
library(ggplot2)
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes(y=mpg, color="one")) +
geom_line(aes(y=qsec, color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))
gdzie jestem wykreślania dwie linie i określającego grupę kolorów dla każdego. Teraz załóżmy, że chcę, aby określić nazwy zmiennych dynamicznie jako wartości znakowych co oznacza, że trzeba użyć aes_string().
Gdy próbuję
v1<-"mpg"
v2<-"qsec"
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes_string(y=v1, color="one")) +
geom_line(aes_string(y=v2, color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))
pojawia się błąd
Error in eval(expr, envir, enclos) : object 'one' not found
bo teraz aes_string()
próbuje analizować wartość koloru, gdy chcę tylko dosłownej wartości znaku. I jeśli próbuję
ggplot(mtcars, aes(x=wt)) + ylab("") +
geom_line(aes_string(y=v1), aes(color="one")) +
geom_line(aes_string(y=v2), aes(color="two")) +
scale_color_manual(name="Val", values=c(one="#105B63",two="#BD4932"))
uzyskać
Error: ggplot2 doesn't know how to deal with data of class uneval
przypuszczalnie dlatego, że warstwa nie umie obsłużyć dwie dyrektywy estetyczne.
Jak mogę łączyć estetykę aes()
i aes_string()
lub jak określić wartości literalne dla aes_string()
?
Dobrze, rozwiązałeś problem, którego nawet nie zauważyłem;) (+1.5) – BrodieG