I do not think ggplot2 will allow you to change the color twice and update the legend. I seem to recall that you cannot change scale_color_manual twice in the plot. I could not find this web page, but this post touches on the topic. I also tried using the sentences in this article , but that didn't work. Probably because we are trying to mix geoms (but this is just an assumption).
I can get either regression color:
part1 <- ggplot(currDT, aes(x = EFP, y = SAPT), na.rm = TRUE) + stat_smooth(method = "lm", formula = y ~ x + 0, aes(linetype = Halide, colour = Halide), alpha = 0.8, size = 0.5, level = 0) + scale_linetype_manual(name = "", values = c("dotdash", "F1"), breaks = c("hal", "non-hal"), labels = c("Halides", "Non-Halides")) + scale_color_manual(name = "", values = c("red", 'blue'), labels = c("Halides", "Non-Halides")) ggsave('part1.jpeg', part1)
Or the data indicates a graph:
part2 <- ggplot(currDT, aes(x = EFP, y = SAPT), na.rm = TRUE) + geom_point(aes(color = Anion, shape = Cation), size = 3, alpha = 0.4) + scale_linetype_manual(name = "", values = c("dotdash", "F1"), breaks = c("hal", "non-hal"), labels =c("Halides", "Non-Halides")) + scale_colour_manual(values = my_col_scheme) ggsave('part2.jpeg', part2)
But not both:
both <- ggplot(currDT, aes(x = EFP, y = SAPT), na.rm = TRUE) + stat_smooth(method = "lm", formula = y ~ x + 0, aes(linetype = Halide, colour = Halide), alpha = 0.8, size = 0.5, level = 0) + scale_linetype_manual(name = "", values = c("dotdash", "F1"), breaks = c("hal", "non-hal"), labels = c("Halides", "Non-Halides")) + geom_point(aes(color = Anion, shape = Cation), size = 3, alpha = 0.4) + scale_colour_manual(values = my_col_scheme) ggsave('both.jpeg', both)

I think you will need to add each linear instruction. I hope someone else knows how to answer this, but I don't think @hadley allows me to change both colors. Fortunately, you are data.table , so this should be easy to do data.table
Comment so that someone else tries to solve this problem . I hope my partial answer helps you answer this question. Also, my third image shows how ggplot2 doesn't get the legend color as the OP wants it. As another tip, you can try playing with the legendary options.