【发布时间】:2015-01-27 06:46:22
【问题描述】:
我有这组数据
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 轴”,以便我可以将它们作为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))
【问题讨论】:
-
这听起来像你需要定义你的
group变量see?factor的级别,否则它们是按字母顺序绘制的。搜索关于更改 ggplot 中变量顺序的 SO- 有很多示例 -
我添加了代码,谢谢
-
更改
factor组data$group <- factor(data$group, levels=c("Nor", "i_GS", "GS"))的级别,然后在您的ggplot调用中更改fill=group -
其实这是一个更好的副本:stackoverflow.com/questions/3253641/…
-
user20650 是的,我在发帖前看到了那个。正如我在帖子中指出的那样,我想对子组而不是 x 轴本身进行排序,谢谢