2015-09-01 2 views
3

Я довольно новичок в R и пытаюсь изменить цвета моей сгенерированной диаграммы. enter image description hereПереопределение цветов по умолчанию в диаграмме ggplot

p = ggplot(plasma1, aes(x=Day, y=Control, colour=Supp)) 
+ theme(panel.background = element_rect(fill='white', colour='black')) 
+ geom_point(size=2, shape=21) 
+ geom_errorbar(aes(ymin=Control-SEMcontrol, ymax=Control+SEMcontrol), width=1) 

p + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) 
+ xlab("X") + ylab("Y") + geom_line(linetype="dashed") 

Я посмотрел на темы(), но я могу только показаться, чтобы изменить линии сетки, а не линия тренда. (В идеале я хотел бы изменить красный & синий на красный & черный

+0

Посмотрите на scale_colour_manual. – Heroka

+0

как насчет использования аргумента 'colour' в' geom_line' – pcantalupo

+2

Попробуйте добавить '+ scale_color_manual (значения = c (C =" красный ", N =" черный "))' в определение ggplot. – jlhoward

ответ

2

Примечание: Конвенция о SO является то, что «ответы» зарезервированы для воспроизводимой кода, который демонстрирует решение, что меньше (как предложение) принадлежит в комментарии. . Вот почему так важно, чтобы собеседники предоставить свои данные как часть вопроса, в противном случае мы должны сделать некоторые для вас, что большинство людей (оправданно) не желаем делать

ответ вы спросили. для ниже, но прежде чем вникать в это, вы должны знать, что стандартная цветовая схема ggplot тщательно выбрана, поэтому вы должны ее изменить только в том случае, если есть веская причина. что человеческая эволюция вызвала определенные цвета (например, красный), чтобы получить перцептивное усиление по сравнению с другими цветами. Поэтому, если у вас есть красная кривая и черная кривая, красная кривая оставляет сильное впечатление. Этот факт широко используется в определенных областях (например, в рекламе), чтобы психологически манипулировать зрителем, но ему нет места в визуализации научных данных. ggplot по умолчанию, которые основаны на цветовой системе HCL (которая, в свою очередь, основана на Munsell color system), постарайтесь достичь двух целей: создать цветовую палитру, где каждый цвет максимально различим от всех других цветов и выравнивать относительное перцептивное воздействие. Существует довольно техническое обсуждение этой темы here и некоторые интересные примеры here.

Нижняя линия: не меняйте цвета, если у вас нет повода для этого.

Сказав все это, простой ответ на ваш вопрос заключается в использовании 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")) 

который производит это:

Как уже упоминалось в одном из комментариев , вы также можете использовать один из Brewer Palettes, разработанный профессором Синтия Брюэр в штате Пенн. Первоначально они предназначались для картографических приложений, но широко использовались в научной визуализации.

ggp + scale_color_brewer(palette="Set1") 

+0

Спасибо за интересные комментарии. –

Смежные вопросы