【发布时间】:2019-04-12 08:30:38
【问题描述】:
我有一个像这样的数据框:
数据框:
df<- data.frame(station= as.factor(rep("a", 12)),
month= as.character(c("Apr", "Aug", "Dec", "Feb", "Jan", "Jul",
"Jun", "Mar", "May", "Nov", "Oct", "Sep")),
mean= rnorm(12, 300, 10), sd= rnorm(12, 300, 1), season= c(rep("wet", 6), rep("dry", 6)))
我想按连续顺序重新排序月份,以便当我输入 ggplot 函数时,每个月的数据都按日历顺序出现。
尝试订购失败:
df$month<-factor(df$month, levels=c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
我之前已经让它工作并使用以下代码来获取后续输出,但是我在此过程中删除了一些东西,并认为错误的来源是不正确的排序:
以前的输出:
p<
ggplot(df, aes(x = month, y=mean, fill=season)) +
geom_bar(stat="identity", color="black",
position=position_dodge()) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.2,
position=position_dodge(.9))
p +labs(x="Month", y = "Precipitation (mm)") +
theme_bw()+
theme(legend.title = element_blank(),legend.text=element_text(size=15),legend.position="top",title= element_text(size=20), axis.text= element_text(size=10, face = "bold"), panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black")) +
coord_flip()
我想最终再次生成这个数字(注意:为简化起见,我的示例代码只包含两个季节,而不是图像中的三个)。
【问题讨论】:
-
是不是现在的顺序是从下到上而不是从上到下的问题?在这种情况下,您可以添加
scale_x_discrete(limits = rev(levels(df$month))),如here 所示。否则,您的代码可以让我按日期排序(不过,从底部到顶部)。 -
仅供参考,您可以使用内置变量
month.abb而不是输入"Jan", "Feb", ...。