2014-10-30 42 views
0

我试图修改在this post中创建的绘图中的构面标签。将标签添加到facet_wrap boxplot

要重复码:

library(ggplot2) 

mymatrix1 <- matrix(data = 0, nrow = 105, ncol =2) 
mymatrix2 <- matrix(data = 0, nrow = 108, ncol =2) 
mymatrix3 <- matrix(data = 0, nrow = 112, ncol =2) 

mymatrix1[,1] <- sample(0:1, 105, replace= TRUE) 
mymatrix1[,2] <- rnorm(105, 52, 2) 
mymatrix2[,1] <- sample(0:1, 108, replace= TRUE) 
mymatrix2[,2] <- rnorm(108, 60, 2) 
mymatrix3[,1] <- sample(0:1, 112, replace= TRUE) 
mymatrix3[,2] <- rnorm(112, 70, 2) 

mydata <- list(mymatrix1, mymatrix2,mymatrix3) 

for(i in 1:3){ 
    mydata[[i]] <- cbind(mydata[[i]], i) 
    colnames(mydata[[i]]) <- c("class", "readcount", "group") 
} 

mydata <- as.data.frame(do.call(rbind, mydata)) 

## fixed scales 
p <- qplot(class, readcount, data = mydata, geom="boxplot", fill = factor(class)) + 
    geom_jitter(position=position_jitter(w=0.1,h=0.1)) + 
    scale_x_continuous(breaks=c(0,1), labels=c("0", "1")) + 
    facet_wrap(~ group) 

## free scales 
p + facet_wrap(~ group, scales = "free") 

我的目标,在这个情节,是改变小标签1,2和3,像“一”,“B”或“C”。 我认为,简单地改变数据帧列“组”,以字母代替数字在for循环:

for(i in 1:3){ 
    mydata[[i]] <- cbind(mydata[[i]], letters[i]) 
    colnames(mydata[[i]]) <- c("class", "readcount", "group") 
} 

会的工作,但我得到这个错误:

Error: Discrete value supplied to continuous scale

有什么建议吗?我查看了其他帖子以更改小平面标签,但它们似乎不适用于此类情节(至少对我而言)。

非常感谢。

+0

http://www.cookbook-r.com/Graphs/Facets_(ggplot2)/ – amzu 2014-10-30 20:43:51

回答

0

你在找这样的事吗?

mydata$group <- as.factor(mydata$group) 
levels(mydata$group) <- c("A","B","C") 
+0

阿那就是美丽!非常感谢!! – jhomsy 2014-10-30 21:19:56