为了账号安全,请及时绑定邮箱和手机立即绑定

ggplot2:对图进行排序

ggplot2:对图进行排序

慕莱坞森 2019-10-09 15:28:28
我有一个data.frame,从最高到最低排序。例如:x <- structure(list(variable = structure(c(10L, 6L, 3L, 4L, 2L, 8L, 9L, 5L, 1L, 7L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j"), class = c("ordered", "factor")), value = c(0.990683229813665, 0.975155279503106, 0.928571428571429, 0.807453416149068, 0.717391304347826, 0.388198757763975, 0.357142857142857, 0.201863354037267, 0.173913043478261, 0.0496894409937888)), .Names = c("variable", "value"), row.names = c(10L, 6L, 3L, 4L, 2L, 8L, 9L, 5L, 1L, 7L), class = "data.frame")ggplot(x, aes(x=variable,y=value)) + geom_bar(stat="identity") +  scale_y_continuous("",label=scales::percent) + coord_flip() 现在,数据很好并且可以排序,但是当我绘制图表时,它是按因子排序的。这很烦人,我该如何解决?
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

这有两种方法。


第一个将根据数据框中显示的顺序对事物进行排序:


x$variable <- factor(x$variable, levels=unique(as.character(x$variable)) )

第二个命令基于另一个变量(在这种情况下为值)对级别进行排序:


x <- transform(x, variable=reorder(variable, -value) ) 


查看完整回答
反对 回复 2019-10-09
?
慕慕森

TA贡献1856条经验 获得超17个赞

这似乎是您要找的东西:


g <- ggplot(x, aes(reorder(variable, value), value))

g + geom_bar() + scale_y_continuous(formatter="percent") + coord_flip()

该reorder()功能将根据重新排序x轴的项目value的variable。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 2585 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信