有没有办法指定我希望堆积条形图的条形图与ggplot按照从最小到最大的四个因子的总和排序? (所以在下面的代码中,我想按所有变量的总和排序)我有一个数据帧中每个x值的总和,我融化了这个值以创建我构成图形的数据帧 .
我用来绘制图表的代码是:
ggplot(md, aes(x=factor(fullname), fill=factor(variable))) + geom_bar()
我当前的图表如下所示:
http://i.minus.com/i5lvxGAH0hZxE.png
最终的结果是我想要一个看起来有点像这样的图:
http://i.minus.com/kXpqozXuV0x6m.jpg
我的数据如下:
data in chart http://i.minus.com/izAmjF47yfsRQ.png
我把它融化成这种形式,每个学生都有每个类别的 Value :
melted data http://i.minus.com/i1rf5HSfcpzri.png
在使用以下行进行图表绘制之前
ggplot(data=md, aes(x=fullname, y=value, fill=variable), ordered=TRUE) + geom_bar()+ opts(axis.text.x=theme_text(angle=90))
现在,我不确定我是否了解Chi的排序方式,以及是否可以将其应用于我所拥有的任何一帧的数据 . 也许在我拥有的原始数据框架中对数据进行排序是有帮助的,这是我首先展示的数据框架 .
更新:我们想通了 . 请参阅此主题以获得答案:Order Stacked Bar Graph in ggplot
1 回答
我不确定你的数据是如何生成的(也就是说,你是否使用了
reshape
包中的cast / melt的组合,这是我怀疑你的变量的默认名称),但是这里是一个玩具示例,其中排序是在ggplot
的调用之外完成的 . 可能有更好的方法,按照@Andy的建议浏览SO .要反向排序,请使用
order
命令添加decr=TRUE
. 此外,正如@Andy所建议的那样,您可以通过添加+ coord_flip()
而不是opts()
选项来克服x标签重叠的问题 .