90

I don't use ggplot2 that much, but today I thought I'd give it a go on some graphs. But I can't figure out how to manually control colors in geom_line()

I'm sure I'm overlooking something simple, but here's my test code:

x <- c(1:20, 1:20)
variable <- c(rep("y1", 20), rep("y2", 20) )
value <- c(rnorm(20), rnorm(20,.5) )

df <- data.frame(x, variable, value )

d <- ggplot(df, aes(x=x, y=value, group=variable, colour=variable ) ) + 
            geom_line(size=2)
d

which gives me the expected output:

enter image description here

I thought all I had to do was something simple like:

d +  scale_fill_manual(values=c("#CC6666", "#9999CC"))

But that changes nothing. What am I missing?

Braiam
  • 1
  • 11
  • 50
  • 74
JD Long
  • 57,386
  • 54
  • 197
  • 281

2 Answers2

131

color and fill are separate aesthetics. Since you want to modify the color you need to use the corresponding scale:

d + scale_color_manual(values=c("#CC6666", "#9999CC"))

is what you want.

Ista
  • 9,711
  • 2
  • 34
  • 34
1

Here's a minimal reproducible example of another way to change line colours (try running it):

library(tidyverse)
library(ggplot2)

iris %>% 
  ggplot(aes(x = Petal.Length)) +
  geom_line(aes(y = Sepal.Length), color = "green") +
  geom_line(aes(y = Sepal.Width), color = "blue") 

enter image description here

This way can be particularly useful when you added the lines manually.

stevec
  • 27,285
  • 13
  • 133
  • 181