Примечание. Соглашение о SO заключается в том, что «ответы» зарезервированы для воспроизводимого кода, демонстрирующего решение. Все, что меньше (например, предложение), относится к комментариям. Вот почему так важно, чтобы спрашивающие предоставляли свои данные как часть вопроса; в противном случае нам придется что-то компенсировать за вас, чего большинство людей (оправданно) не хотят делать.
Ответ, который вы просили, приведен ниже, но прежде чем перейти к этому, вы должны знать, что цветовая схема по умолчанию ggplot
тщательно выбрана, поэтому вам следует менять ее только в том случае, если есть веская причина. Проблема в том, что человеческая эволюция привела к тому, что определенные цвета (например, красный) получили усиление восприятия по сравнению с другими цветами. Таким образом, если у вас есть красная кривая и черная кривая, красная кривая оставляет более сильное «впечатление». Этот факт широко используется в определенных областях (например, в рекламе) для психологического манипулирования зрителем, но ему нет места в визуализации научных данных. ggplot
значения по умолчанию, основанные на цветовой системе HCL (которая, в свою очередь, основана на цветовой системе Munsell а>), попытайтесь достичь двух целей: создать цветовую палитру, в которой каждый цвет максимально отличим от всех других цветов, и выровнять относительное воздействие на восприятие. Существует довольно техническое обсуждение этой темы здесь и несколько хороших примеров здесь.
Итог: не меняйте цвета, если у вас нет для этого действительно веской причины.
Сказав все это, простой ответ на ваш вопрос — использовать scale_color_manual(...)
, как показано ниже:
# all this to set up the example - you have this already
set.seed(1) # for reproducible example
x <- rep(c(1,2,4,8,11,14), each=5)
df1 <- data.frame(Day=x,Control=125*(1-exp(-x/5))+rnorm(30,sd=25),Supp="N")
df2 <- data.frame(Day=x,Control=90*(1-exp(-x/3))+rnorm(30,sd=25),Supp="C")
plasma1 <- aggregate(Control~Day+Supp,rbind(df2, df1), FUN=function(x)c(Control=mean(x),SEMcontrol=sd(x)/sqrt(length(x))))
plasma1 <- data.frame(plasma1[,1:2],plasma1[[3]])
# you start here
library(ggplot2)
ggp <- ggplot(plasma1, aes(x=Day, y=Control, color=Supp))+
geom_point(size=3, shape=21)+
geom_line(linetype="dashed")+
geom_errorbar(aes(ymax=Control+SEMcontrol, ymin=Control-SEMcontrol), width=0.3)+
theme_bw()+theme(panel.grid=element_blank())
ggp + scale_color_manual(values=c(C="red",N="black"))
Что производит это:
а>
Как упоминалось в одном из комментариев, вы также можете использовать одну из палитр Брюера, разработанных профессором Синтией Брюэр из Университета штата Пенсильвания. . Первоначально они предназначались для картографических приложений, но стали широко использоваться в научной визуализации.
ggp + scale_color_brewer(palette="Set1")
а>
person
jlhoward
schedule
01.09.2015
colour
вgeom_line
- person pcantalupo   schedule 01.09.2015+scale_color_manual(values=c(C="red",N="black"))
к определению ggplot. - person jlhoward   schedule 01.09.2015scale_colour_manual()
, но также иscale_colour_brewer()
для более читаемых цветов, если вы не привязаны к красному, синему и черному. См. документацию. - person Alex W   schedule 01.09.2015ggthemes
с другими цветовыми шкалами (например, tableau) - person hrbrmstr   schedule 01.09.2015