ggplot2: How to specify multiple fill colors for points that are connected by lines of different colors

36,328

scale_fill_manual(), scale_shape_manual() and scale_colour_manual() can be used only if you have set fill=, shape= or colour= inside the aes().

To change colour just for the points you should add colour=group inside geom_point() call.

  ggplot(data, aes(x=iv, y=dv, group=group,shape=group)) + 
    geom_line() + geom_point(aes(colour=group)) +
    scale_shape_manual(values=c(19,20,21))+
    scale_colour_manual(values=c("blue", "red","gray"))

enter image description here

Share:
36,328
Alex
Author by

Alex

Updated on March 13, 2020

Comments

  • Alex
    Alex about 4 years

    I am new to ggplot2. I would like to create a line plot that has points on them where the points are filled with different colors than the lines (see the plot below). enter image description here Suppose the dataset I am working with is the one below:

    set.seed(100)
    data<-data.frame(dv=c(rnorm(30), rnorm(30, mean=1), rnorm(30, mean=2)), 
                     iv=rep(1:30, 3), 
                     group=rep(letters[1:3], each=30))
    

    I tried the following code:

    p<-ggplot(data, aes(x=iv, y=dv, group=group,  pch=group)) + geom_line() + geom_point()
    
    p + scale_color_manual(values=rep("black",3))+ scale_shape(c(19,20,21)) + 
    scale_fill_manual(values=c("blue", "red","gray"))
    
    p +  scale_shape(c(19,20,21)) + scale_fill_manual(values=c("blue", "red","gray"))
    

    But I do not get what I want.I hope someone can point me to the right direction. Thanks!

  • qed
    qed about 9 years
    What if the plot has already been created and I want change the color palette of that?