lll lll - 1 year ago 57
R Question

R: how to customize the legend labeling of ggplot2

I have plot like the following using the

(code attached), but I am wondering how I can change the legend into the proper order - having sp (spring) comes before au (autumn). I want the legend order to be like: 2008 spring, 2008 autumn, 2009 spring, 2009 autumn,...etc. But what I currently have is 2008au, 2008sp, ...etc. I have tried adding scale_fill_discrete, but it is not working.

ggplot(derivative_noHS, aes(x=Date, y=derv, linetype = Season)) +
geom_line() +
scale_linetype_manual(values = c("dashed","solid","dashed","solid","dashed","solid","dashed",
facet_wrap(~Market, scales="free_y")+ geom_hline(aes(yintercept = positive.cut), derivative_noHS)+
geom_hline(aes(yintercept = zero),
geom_hline(aes(yintercept = negative.cut), derivative_noHS) + ggtitle("Figure 2 - Derivatives of Market Indices")+
labels = c("2008sp","2008au","2009sp","2009au","2010sp","2010au","2011sp",
"2011au","2012sp","2012au","2013sp","2013au","2014sp","2014au")) +
ylab("Derivative Values")

enter image description here

Answer Source

You can try ordered before calling ggplot()

derivative_noHS$Season <- ordered(derivative_noHS$Season, c("2008sp", "2008au", "2009sp", 
                                                          "2009au", "2010sp", "2010au", 
                                                          "2011sp", "2011au", "2012sp", 
                                                          "2012au", "2013sp", "2013au", 
                                                          "2014sp", "2014au"))