Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对条形图列进行排序_R_Sorting_Bar Chart_Ggplot2 - Fatal编程技术网

R 对条形图列进行排序

R 对条形图列进行排序,r,sorting,bar-chart,ggplot2,R,Sorting,Bar Chart,Ggplot2,我使用此R代码生成以下条形图: d <- data.frame(case = c(1,2,3,4), var=c('foo', 'foo', 'foo', 'foo','bar', 'bar', 'bar', 'bar'), val=c(9,2,2,4,6,1,2,3)) d$var <- as.factor(d$var) d$case <- as.factor(d$case) ggplot(d, aes(x

我使用此R代码生成以下条形图:

d <- data.frame(case = c(1,2,3,4), 
                var=c('foo', 'foo', 'foo', 'foo','bar', 'bar', 'bar', 'bar'), 
                val=c(9,2,2,4,6,1,2,3))
d$var <- as.factor(d$var)
d$case <- as.factor(d$case)
ggplot(d, aes(x = case, y = val, fill = var)) + scale_x_discrete() + geom_bar(position="dodge")

d使用
order
获取按
bar
值排序的列,并在
foo
中复制它。然后将此列用于
x

d$case <- match(d$val[d$var == "bar"], sort(d$val[d$var == "bar"]))
d$case <- factor(d$case, levels=1:4)
# now use this:
ggplot(d, aes(x = case, y = val, fill = var)) +  
         geom_bar(position="dodge", stat="identity")

@Arun我想你只需要修改你的答案,在
foo
中按
val
case
的级别进行排序,但我同意这个问题并不十分清楚。@Arun,感谢你的回答,我真正想做的是,我不想按案例对列进行排序,而是跨案例排序。在我的示例中,如果我“按bar的值对条进行排序”,我希望案例按以下顺序显示:1、4、3、2Arun基本上向您展示了方法,尽管他误读了您希望排序的方式。只需按照所需的顺序指定
案例的级别即可。好的,经过足够的尝试,现在,我想我做对了。谢谢@joran澄清这个问题。这就是我所期待的。谢谢!
 ggplot(d, aes( x= order, fill = var)) + geom_bar(aes(weights=val), position="dodge")