r - 如何更改 ggplot2 构面的顺序

标签 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 ...

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

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")

图表如下所示:

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

pd.long$Site
Levels: BED BEU EB KAD KAU KB KER KOA KOB KOO PNS RO

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

KOA KOB KOO EB  PNS BED KB  KER KAU KAD RO  BEU

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

最佳答案

对因素重新排序

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

或更一般的答案,其中顺序基于Site列中的第一次出现:

pd.long$Site <- factor(pd.long$Site,levels=unique(pd.long$Site))

关于r - 如何更改 ggplot2 构面的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49899417/

相关文章:

r - 使用 gganimate 动画 geom_bar 的问题

r - 在循环中运行箱形图/水平线时,hline 索引没有改变的问题

r - 根据dplyr中每列中的数据组合数据框

r - 等同于 R 中泊松族的 plogis(logit)

r - 在没有 xts 对象的情况下在 PortfolioAnalytics 中创建有效边界

r - 列是否存在以及如何重新排列 R 数据框中的列

r - CairoPNG 增加了图边距之外的文本大小

r - 在 ggplot 中从右到左对面板进行排序

R/ggplot2/如何从散点图中的连接点移动到填充和透明的三角形?

pandas - 在seaborn中通过平滑绘制facetgrid图