我正在尝试制作一个条形图,其中从最miRNA
的{{1}}到最低value
的{{1}}订购地块。为什么我的代码不起作用?
miRNA
答案 0 :(得分:169)
您的代码工作正常,但条形图从低到高排序。如果您想要从高到低订购条形图,则必须在-
之前添加value
符号:
ggplot(corr.m, aes(x = reorder(miRNA, -value), y = value, fill = variable)) +
geom_bar(stat = "identity")
给出:
使用过的数据:
corr.m <- structure(list(miRNA = structure(c(5L, 2L, 3L, 6L, 1L, 4L), .Label = c("mmu-miR-139-5p", "mmu-miR-1983", "mmu-miR-301a-3p", "mmu-miR-5097", "mmu-miR-532-3p", "mmu-miR-96-5p"), class = "factor"),
variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "pos", class = "factor"),
value = c(7L, 75L, 70L, 5L, 10L, 47L)),
class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))
答案 1 :(得分:1)
除了@Jaap 的回答之外,还有另外两种排列情节的方法:
1:通过使用 desc
参数作为值:
ggplot(corr.m, aes(x = reorder(miRNA, desc(value)), y = value, fill = variable)) +
geom_bar(stat = "identity")
2:通过重新调整 miRNA 因子并省略 reorder
参数:
corr.m %>%
arrange(desc(value)) %>%
mutate(miRNA = factor(miRNA, levels = unique(miRNA))) %>%
ggplot(aes(x = miRNA, y = value, fill = variable)) +
geom_bar(stat = "identity")
答案 2 :(得分:0)
您可以使用reorder()
函数沿x轴对变量重新排序。但是,有时ggplot不会收听重新排序。这通常是因为以错误的顺序添加了图的其他图层。如果您有复杂的绘图并且reorder()不会影响结果,请尝试暂时删除或静音其他功能,然后将它们一个接一个地添加。
ggplot(aes(x=reorder(myx, -myy), y=myy), data=mydf) +
geom_bar(stat="identity")