在绘制ggplot2

时间:2018-05-23 08:59:24

标签: r ggplot2

我有一个具有这种结构的数据框:

> str(pd)
'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 ...  

我希望在实际使用ggplot2进行绘图之前,在不更改原始数据集的情况下,将Month的12个级别的名称从Dec, Jan, Feb, ..., Nov更改为D, J, F, ..., N

我尝试使用mapvalues()包中的plyr,如下所示:

pd$Month2 <- mapvalues(pd$Month , 
                       from = c("Dec","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov"), 
                       to = c("D","J","F","M","A","M","J","J","A","S","O","N"))  

虽然我可以替换等级,但是通过组合以相同字母开头的月份,将12个等级减少到仅为8。

> head(pd$Month2)
[1] D D D D D D
Levels: D J F M A S O N
> str(pd$Month2)
 Factor w/ 8 levels "D","J","F","M",..: 1 1 1 1 1 1 1 1 1 1 ...

当我在ggplot2中绘制这个时,正如预期的那样我只能绘制8个级别,这在这种情况下是错误的

ggplot(pd,aes(x=Month2,y=Density,fill=Site))+
  geom_bar(stat="identity",position="dodge", fill= "darkgray")+
  xlab("Month")+ylab("Number of Individuals")+
  facet_wrap(~Site,nrow=3)

月份,如1月,6月和7月,以相同的字母J开头,只在J下合并一次。

如何分别绘制所有重复的字母?

0 个答案:

没有答案