r - Generating a legend in ggplot2 -
i tried generate legend ggplot, want illustrate 5 different lines on time horizon of 2,5 months 11 datapoints. can generate graph, doesn't work legend comparing colors , names of lines. tried different commands, i.e. scale_colour_manual, scale_fill_discrete, opts, guides,... nothing works. don't know what's wrong.. can please me?
here commands define data frame.
spaß <- read.csv(file="spaßfaktor.csv", header = true, sep = ";", dec=",") svs <- ts(spaß$sehr.viel.spaß, deltat=1/52) vs <- ts(viel.spaß, deltat=1/52) n <- ts(normal, deltat=1/52) ws <- ts(wenig.spaß, deltat=1/52) sws <- ts(sehr.wenig.spaß, deltat=1/52) zp <- strptime(spaß$zeitpunkt, format="%d.%m.%y") zp df<-data.frame(zp, svs, vs, n, ws, sws)
to generate graph, used example following command (which includes comman scale_colour_manual). including command, r doesn't create graph. if delete out of ggplot command, graph shwos up:
sp<-ggplot(df, aes(zeit) ) + geom_line(aes(y=svs), colour="green", lwd=1.3) + # first layer geom_line(aes(y=vs), colour="blue", lwd=1.3) + geom_line(aes(y=n), colour="black", lwd=1.3) + geom_line(aes(y=ws), colour="orange", lwd=1.3) + geom_line(aes(y=sws), colour="red", lwd=1.3) + scale_colour_manual("", breaks = c("sehr viel spaß", "viel spaß", "normal", "wenig spaß", "sehr wenig spaß"), values = c("green", "blue", "black", "orange", "red"))+ xlab("zeit") + scale_y_continuous("anzahl in prozent", limits = c(0,65)) + labs(title="häufigkeit der auspräungen des faktors spaß") sp
i tried command scale_fill_discrete or guide @ end adding sp. means i.e.: sp + guides(fill = guide_legend(reverse=true))
or sp + scale_fill_discrete(name="legende", labels=c("sehr viel spaß", "viel spaß", "normal", "wenig spaß", "sehr wenig spaß"))
can please me??
the datas generated on own survey. shown underneath:
varaible spaß beurteilung sehr viel spaß/sehr gut 4 5 viel spaß/gut 8 6 normal/neutral 10 9 wenig spaß/schlecht 3 4 sehr wenig spaß/sehr schlecht 3 4
to expand on heroka's comment you'll want use tidyr
or reshape2
convert data wide format long format. vignettes each package cover in-depth. you'd set color in aes
call in geom_line
, use scale_color_manual
set breaks, colors , labels appropriately.
library(tidyr) library(ggplot2) # using input dataset provided in separate answer df <- gather(df, variable, value, -zeitpunkt) ggplot(df, aes(x = zp) ) + geom_line(aes(y = value, colour = variable, group = variable), lwd = 1.3) + scale_colour_manual(labels = c("sehr viel spaß", "viel spaß", "normal", "wenig spaß", "sehr wenig spaß"), breaks = c("svs","vs","n","ws","w"), values = c("green", "blue", "black", "orange", "red")) + xlab("zeit") + scale_y_continuous("anzahl in prozent", limits = c(0,65)) + labs(title="häufigkeit der auspräungen des faktors spaß")
Comments
Post a Comment