2013-05-09 42 views
1

使用在数据帧d中的变量(日,月,计数),我使用ggplot下面:在R中使用组合条形图和折线图时,是否可以对x轴标签进行排序?

day <- c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Week","Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Week") 
day <- factor(day, level=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Week")) 
month<-c("Jan","Jan","Jan","Jan","Jan","Jan","Jan","Jan","Feb","Feb","Feb","Feb","Feb","Feb","Feb","Feb") 
month<-factor(month,level=c("Jan","Feb")) 
count <- c(4,5,6,8,3,4,9,5.57,2,4,3,7,1,9,3,4.14) 
d <- data.frame(day=day,count=count,month=month) 
d 

线图以下正确地定购天:

ggplot()+geom_line(data=d[d$day!="Week",],aes(x=day, y=count, group=month, colour=month)) 

下条形图正确地显示两个计数:

ggplot()+geom_bar(data=d[d$day=="Week",],aes(x=day, y=count, fill=month),position="dodge") 

然而,天的顺序是在组合的图形不正确的:

ggplot()+geom_line(data=d[d$day!="Week",],aes(x=day, y=count, group=month, colour=month))+geom_bar(data=d[d$day=="Week",],aes(x=day, y=count, fill=month),position="dodge") 

如何在x轴上正确显示天数的顺序?

回答

3

您可以使用scale_x_discrete()以参数limits=更改休息顺序。由于您的原始数据框因子水平是正确的,所以您可以使用limits=levels(d$day)

ggplot()+ 
    geom_line(data=d[d$day!="Week",], 
        aes(x=day, y=count, group=month, colour=month))+ 
    geom_bar(data=d[d$day=="Week",], 
        aes(x=day, y=count, fill=month),position="dodge")+ 
    scale_x_discrete(limits=levels(d$day)) 

enter image description here

相关问题