如何更改ggplot2构面的顺序

Mun*_*eer 4 r ggplot2

我有一个具有以下结构的数据帧“ pd.long”:

> str(pd.long)
'data.frame':   144 obs. of  3 variables:
$ Site   : Factor w/ 12 levels "BED","BEU","EB",..: 8 9 10 3 11 1 6 7 5 4 ...
$ Month  : Factor w/ 12 levels "Dec","Jan","Feb",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Density: int  20 20 20 20 20 20 20 20 20 20 ...
Run Code Online (Sandbox Code Playgroud)

我用这段代码构建了条形图:

ggplot(pd.long, aes(x=Month, y=Density, fill=Site))+
geom_bar(stat = "identity", position = "dodge", fill = "darkgray")+
xlab("Month") + ylab("Number")+
facet_wrap(~Site, nrow = 3, scales = "free")
Run Code Online (Sandbox Code Playgroud)

和图形如下所示:

一切都很好,直到我注意到变量“ Site”的级别不在我选择的顺序之内。ggplot按字母顺序对其进行排序,如下所示:

pd.long$Site
Levels: BED BEU EB KAD KAU KB KER KOA KOB KOO PNS RO
Run Code Online (Sandbox Code Playgroud)

但是,我希望它们与它们在变量列中出现的顺序相同,即

KOA KOB KOO EB  PNS BED KB  KER KAU KAD RO  BEU
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢

Nic*_*ick 5

重新整理因素

pd.long$Site <- factor(pd.long$Site,levels=c("KOA","KOB","KOO","EB","PNS","BED","KB","KER","KAU","KAD","RO","BEU"))
Run Code Online (Sandbox Code Playgroud)

或更普遍的答案,其中顺序基于Site列中的第一个出现:

pd.long$Site <- factor(pd.long$Site,levels=unique(pd.long$Site))
Run Code Online (Sandbox Code Playgroud)