R 根据熔化数据帧的变量重新排序

R 根据熔化数据帧的变量重新排序,r,ggplot2,melt,R,Ggplot2,Melt,我的数据如下: DF=structure(list(experiment = c("BR", "CH", "EP", "IP", "JU", "MA", "SA", "ST", "SV", "VI"), duration = c(28L, 9L, 20L, 4L, 14L, 30L, 26L, 23L, 17L, 6L), percentage_total_exp = c(47.2222222222222, 51.063829787234, 52.3809523809524, 79.032

我的数据如下:

DF=structure(list(experiment = c("BR", "CH", "EP", "IP", "JU", "MA", 
"SA", "ST", "SV", "VI"), duration = c(28L, 9L, 20L, 4L, 14L, 
30L, 26L, 23L, 17L, 6L), percentage_total_exp = c(47.2222222222222, 
51.063829787234, 52.3809523809524, 79.0322580645161, 48.6842105263158, 
72.7272727272727, 62.0689655172414, 34.469696969697, 61.1111111111111, 
34.8837209302326), nb_reaction = c(29, 29, 14, 11, 40, 11, 14, 
14, 23, 18)), .Names = c("experiment", "duration", "percentage_total_exp", 
"nb_reaction"), row.names = c(NA, -10L), class = "data.frame")
我融化了我的数据,以便显示如下ggplot

meltR=melt(DF)
ggplot(meltR, aes(x=experiment , y = value, group = variable, fill = variable)) + geom_bar(stat = "identity", position="dodge")
现在的问题是,我想要这个图的3个版本。一个按变量排序:
duration
,第二个按变量排序:
percentage\u total\u exp
,最后一个按变量排序:
nb\u reaction

我不知道如何具体说明这一点。我尝试了
y=reorder(value,-duration)
,但实际上它无法识别duration。在这种情况下熔化是个坏主意吗?如何做到这一点

编辑2:要添加的代码最少,因为我的
实验
名称实际上很长

plots <- lapply(levels(meltR$variable), function(lev) {
  meltR$experiment <- factor(meltR$experiment, levels = meltR$experiment[order(meltR$value[meltR$variable == lev])])
  ggplot(meltR, aes(x=experiment , y = value, group = variable, fill = variable)) + geom_bar(stat = "identity", position="dodge") + ggtitle(lev) + theme_bw() + theme(axis.text.x = element_text(size=10, angle=45, hjust=1, vjust=1, face="bold"))
    })
grid.arrange(grobs = plots)

绘图
持续时间
不是列名,而是示例中名为
变量
的列的因子级别。因此,它不是这样工作的。一种选择是在三个因子水平或变量上循环,根据值重新排序,然后绘图。以下是它的工作原理:

library(ggplot2)
library(reshape2)
library(gridExtra)
DF=structure(list(experiment = c("BR", "CH", "EP", "IP", "JU", "MA", 
"SA", "ST", "SV", "VI"), duration = c(28L, 9L, 20L, 4L, 14L, 
30L, 26L, 23L, 17L, 6L), percentage_total_exp = c(47.2222222222222, 
51.063829787234, 52.3809523809524, 79.0322580645161, 48.6842105263158, 
72.7272727272727, 62.0689655172414, 34.469696969697, 61.1111111111111, 
34.8837209302326), nb_reaction = c(29, 29, 14, 11, 40, 11, 14, 
14, 23, 18)), .Names = c("experiment", "duration", "percentage_total_exp", 
"nb_reaction"), row.names = c(NA, -10L), class = "data.frame")
meltR=melt(DF)
plots <- lapply(levels(meltR$variable), function(lev) {
  meltR$experiment <- factor(meltR$experiment, levels = meltR$experiment[order(-meltR$value[meltR$variable == lev])])
  ggplot(meltR, aes(x=experiment , y = value, group = variable, fill = variable)) + geom_bar(stat = "identity", position="dodge") + ggtitle(lev)
})
grid.arrange(grobs = plots)
库(ggplot2)
图书馆(E2)
图书馆(gridExtra)
DF=结构(列表(实验=c(“BR”、“CH”、“EP”、“IP”、“JU”、“MA”),
“SA”,“ST”,“SV”,“VI”),持续时间=c(28L,9L,20L,4L,14L,
30升,26升,23升,17升,6升),总百分比=c(47.22222,
51.063829787234, 52.3809523809524, 79.0322580645161, 48.6842105263158, 
72.7272727272727, 62.0689655172414, 34.469696969697, 61.1111111111111, 
34.8837209302326),nb_反应=c(29,29,14,11,40,11,14,
14,23,18)),.Names=c(“实验”、“持续时间”、“总百分比”,
“nb_反应”),row.names=c(NA,-10L),class=“data.frame”)
meltR=熔体(DF)

太好了!!非常感谢:)!最后一点,它支持添加主题吗?(见我的编辑)。当我添加它时,我的绘图中没有任何值:/无论是否添加主题,都没有任何区别;e、 g.
绘图哦,我明白了,我没有条形图,因为轴标题太长,所以没有任何条形图,现在一切正常,非常感谢您的帮助!