2013-05-14 63 views
3

我有一个数据框我想绘制为条形图,但我希望分类x值按照我用列表指定的特定顺序。我将使用mtcars数据集显示一个示例。使用列表排序ggplot x轴使用列表

#get a small version of the mtcars dataset and add a named column 
mtcars2 <- mtcars 
mtcars2[["car"]] <- rownames(mtcars2) 
mtcars2 <- mtcars[0:5,] 
# I would like to plot this using the following 
p = ggplot(mtcars2, aes(x=car, y=mpg))+ geom_bar(stat="identity") 

x轴的值按字母顺序排序。但是,如果我有车的名单,我想ggplot到订单保留:

#list out of alphabetical order 
orderlist = c("Hornet 4 Drive", "Mazda RX4 Wag", "Mazda RX4", 
       "Datsun 710", "Hornet Sportabout") 

# I would like to plot the bar graph as above but preserve the plot order 
# something like this: 
p = ggplot(mtcars2, aes(x= reorder(car, orderlist), y=mpg))+ geom_bar(stat="identity") 

任何指针将不胜感激, 扎克CP

回答

10

坐落在car因素的水平,你的订单希望他们,例如:

mtcars2 <- transform(mtcars2, car = factor(car, levels = orderlist)) 

然后积工作没有任何进一步的干预:

ggplot(mtcars2, aes(x=car, y=mpg))+ geom_bar(stat="identity") 

enter image description here

+0

完美!感谢您的回答 – zach 2013-05-14 16:33:44