我使用ggplot包在R中制作了一个分组的条形图。我使用了以下代码:
ggplot(completedDF,aes(year,value,fill=variable)) + geom_bar(position=position_dodge(),stat="identity")
图表看起来像这样:
问题在于我希望1999 - 2008年的数据能够结束。
无论如何移动它?
感谢任何帮助。
答案 0 :(得分:2)
ggplot
将遵循因子中的级别顺序。如果您没有订购您的因子,则假定订单是按字母顺序排列的。
如果你想要你的" 1999-2008"最终的模态,只需使用
重新排序您的因素completed$year <- factor(x=completed$year,
levels=c("1999-2002", "2002-2005", "2005-2008", "1999-2008"))
例如:
library(ggplot2)
# Create a sample data set
set.seed(2014)
years_labels <- c( "1999-2008","1999-2002", "2002-2005", "2005-2008")
variable_labels <- c("pointChangeVector", "nonPointChangeVector",
"onRoadChangeVector", "nonRoadChangeVecto")
years <- rbinom(n=1000, size=3,prob=0.3)
variables <- rbinom(n=1000, size=3,prob=0.3)
year <- factor(x=years , levels=0:3, labels=years_labels)
variable <- factor(x=variables , levels=0:3, labels=variable_labels)
completed <- data.frame( year, variable)
# Plot
ggplot(completed,aes(x=year, fill=variable)) + geom_bar(position=position_dodge())
# change the order
completed$year <- factor(x=completed$year,
levels=c("1999-2002", "2002-2005", "2005-2008", "1999-2008"))
ggplot(completed,aes(x=year, fill=variable)) + geom_bar(position=position_dodge())
此外,使用此功能的另一个好处是,您的结果也可以很好地用于summary
或plot
等其他功能。
有帮助吗?
答案 1 :(得分:1)
是的,这是ggplot中的一个真正的问题。它总是改变非数值的顺序
解决问题的最简单方法是以这种方式添加scale_x_discrete
:
p <- ggplot(completedDF,aes(year,value,fill=variable))
p <- p + geom_bar(position=position_dodge(),stat="identity")
p <- p + scale_x_discrete(limits = c("1999-2002","2002-2005","2005-2008","1999-2008"))