改变离散x尺度的顺序

改变离散x尺度的顺序

我正在用具有离散x比例尺的ggmap制作一个隐藏的条形图,x轴现在是按字母顺序排列的,但是我需要重新排列它,使它按y轴的值排序(也就是说,最高的条形线将位于左边)。

我试过排序或排序,但是结果是对x轴进行排序,而不是分别对条形进行排序。

我做错了什么?


萧十郎
浏览 805回答 3
3回答

阿波罗的战车

尝试手动设置x轴上的因子级别。例如:library(ggplot2)#&nbsp;Automatic&nbsp;levelsggplot(mtcars,&nbsp;aes(factor(cyl)))&nbsp;+&nbsp;geom_bar()#&nbsp;Manual&nbsp;levelscyl_table&nbsp;<-&nbsp;table(mtcars$cyl)cyl_levels&nbsp;<-&nbsp;names(cyl_table)[order(cyl_table)]mtcars$cyl2&nbsp; <-&nbsp;factor(mtcars$cyl,&nbsp;levels&nbsp;=&nbsp;cyl_levels)#&nbsp;Just&nbsp;to&nbsp;be&nbsp;clear,&nbsp;the&nbsp;above&nbsp;line&nbsp;is&nbsp;no&nbsp;different&nbsp;than:#&nbsp;mtcars$cyl2&nbsp; <-&nbsp;factor(mtcars$cyl,&nbsp;levels&nbsp;=&nbsp;c("6","4","8"))#&nbsp;You&nbsp;can&nbsp;manually&nbsp;set&nbsp;the&nbsp;levels&nbsp;in&nbsp;whatever&nbsp;order&nbsp;you&nbsp;please.&nbsp;ggplot(mtcars,&nbsp;aes(cyl2))&nbsp;+&nbsp; geom_bar()正如詹姆斯在他的回答中指出的,reorder是调整因子水平的惯用方法。mtcars$cyl3&nbsp;<-&nbsp;with(mtcars,&nbsp;reorder(cyl,&nbsp;cyl,&nbsp;function(x)&nbsp;-length(x)))ggplot(mtcars,&nbsp;aes(cyl3))&nbsp;+&nbsp;geom_bar()

守着一只汪

对我来说最好的方法是使用向量和类别,按照我需要的顺序limits参数scale_x_discrete..我认为这是非常简单和直接的解决方案。ggplot(mtcars,&nbsp;aes(factor(cyl)))&nbsp;+&nbsp; &nbsp;&nbsp;geom_bar()&nbsp;+&nbsp; &nbsp;&nbsp;scale_x_discrete(limits=c(8,4,6))

墨色风雨

你可以用reorder:qplot(reorder(factor(cyl),factor(cyl),length),data=mtcars,geom="bar")编辑:要想在左边有最高的酒吧,你必须使用一些杂念:qplot(reorder(factor(cyl),factor(cyl),function(x)&nbsp;length(x)*-1), &nbsp;&nbsp;&nbsp;data=mtcars,geom="bar")我希望这也有负面的高度,但它没有,所以它的工作!
打开App,查看更多内容
随时随地看视频慕课网APP