我有这组数据
data<-read.table("http://pastebin.com/raw.php?i=Vb8S91LX", header=TRUE)
当我使用ggplot
绘制它们时,X轴子组会自动排列为每个x变量的GS
,i_GS
和Nor
。
我使用的代码是
ggplot(data, aes(x=gene, y=value,fill=as.factor(group))) +
geom_bar(stat='identity', position='dodge') +
geom_errorbar(aes(ymin=value, ymax=value+std),position=position_dodge(0.9), width=.2) +
scale_fill_grey() +
theme_bw() +
xlab("gene symbol")+
ylab("value") +
theme(text = element_text(size=20, face="bold"),
axis.text.x = element_text(vjust=2))
我的问题:
我怎么能扭转它们呢?我的意思是子组不是X轴&#34;这样我就可以Nor
,i_GS
,GS
来获取它们?
数据
data <- structure(list(gene = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("C3", "C4A", "C4B",
"C5", "C6", "C7", "C8A", "C8B", "C8G", "C9"), class = "factor"),
group = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("GS", "i_GS", "Nor"), class = "factor"),
value = c(149L, 43L, 19L, 0L, 0L, 0L, 0L, 0L, 0L, 15L, 192L,
68L, 67L, 51L, 14L, 13L, 0L, 9L, 7L, 41L, 407L, 70L, 71L,
170L, 45L, 47L, 19L, 43L, 24L, 125L), std = c(26L, 17L, 33L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 51L, 3L, 5L, 45L, 12L, 11L, 0L,
8L, 6L, 29L, 73L, 6L, 6L, 84L, 16L, 30L, 17L, 30L, 10L, 2L
)), .Names = c("gene", "group", "value", "std"), class = "data.frame", row.names = c(NA,
-30L))
答案 0 :(得分:0)
只需在ggplot()之前添加:
data$group <- factor(data$group, levels = c("Nor", "i_GS", "GS"))
想法是ggplot从因素中读取它们在数据框中的排列方式。因此,如果您希望以不同的方式显示它们,则必须重新排列数据框中的因子。