2017-07-25 1 views
0

J'ai plus d'articles de légende en raison d'un cours de temps mais je veux seulement montrer deux étiquettes: sain et patient.GGplot2 Modifier les légendes

## Construct the data 
healthy <- rnorm(100,mean=0,sd=1) 
patientTimeA <- rnorm(100,mean=1,sd=1) 
patientTimeB <- rnorm(100,mean=3,sd=1) 
patientTimeC <- rnorm(100,mean=4,sd=1) 
groupArray <- c(rep("H",100),rep("P",300)) 
timeArray <- c(rep(0,100),rep(10,100),rep(20,100),rep(30,100)) 
dataTab <- data.frame(group=groupArray,time=timeArray,value=c(healthy,patientTimeA,patientTimeB,patientTimeC)) 
dataTab$group <- paste(dataTab$group,dataTab$time,sep="_") 

    colVector <- c("red","blue","blue","blue") 

    p <- ggplot(dataTab,aes(x=group,y=value,fill=group)) + 
    geom_boxplot(alpha=0.7)+ 
    scale_fill_manual(values=colVector) 
    print(p) 

enter image description here

Répondre

3

Vous devez créer deux variables différentes dans votre dataTab pour le X et l'esthétique de remplissage:

healthy <- rnorm(100, mean = 0, sd = 1) 
patientTimeA <- rnorm(100, mean = 1, sd = 1) 
patientTimeB <- rnorm(100, mean = 3, sd = 1) 
patientTimeC <- rnorm(100, mean = 4, sd = 1) 
groupArray <- c(rep("H", 100),rep("P", 300)) 
timeArray <- c(rep(0, 100), rep(10, 100), rep(20, 100), rep(30, 100)) 
dataTab <- data.frame(group = groupArray, time = timeArray, 
         value = c(healthy, patientTimeA, patientTimeB, patientTimeC)) 
dataTab$group1 <- paste(dataTab$group, dataTab$time, sep = "_") 
colVector <- c("red", "blue", "blue", "blue") 

p <- ggplot(dataTab, aes(x = group1, y = value, fill = group)) + 
    geom_boxplot(alpha = 0.7) + 
    scale_fill_manual(values = colVector) 
print(p) 

enter image description here