I have a a line graph and I want to reorder the way in which the factors appear in the legend. I have tried scale_fill_discrete
but it doesn't change the order.
Here's a simulation of my problem:
df <- data.frame(var1=c("F", "F", "F", "B", "B", "B"),
var2=c("levelB", "levelC", "levelA"),
value=c("2.487585", "2.535944", "3.444764", "2.917308", "2.954155","3.739049"))
p <- ggplot(data=df, aes(x=var1, y=value,
group=var2, colour=var2, shape = var2)) +
geom_line(size = 0.8) +
geom_point()+
xlab("var1") + ylab("Value") +
scale_x_discrete(limits=c("F","B")) +
theme(legend.title = element_text(size=12)) +
theme(legend.text = element_text(size=10)) +
scale_fill_discrete(breaks=c("levelB","levelC","levelA")) +
theme(title = element_text(size=12)) +
blank + scale_color_manual(values=c("green2", "red", "black")) +
theme(legend.key = element_blank())
p
Which creates this:
I would like everything to remain the exactly the same, except for the legend, where I would like to change the order to levelB
then levelC
then levelA
.
I'm guessing ggplot2
orders the legend alphabetically and I would like to override this.
Reordering my data frame didn't work, and scale_fill_discrete
also doesn't change it.
Any ideas?
Thanks!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…