ggplot2 分面 fact_grid() facet_wrap()

 

>  facet_grid() 可以应用多个标准对数据分组。

如qplot(carat,price,data=diamonds,alpha=I(0.2))+facet_grid(color~cut) 

 

 

 

 

这里 color~cut  波浪号~ 前是分行依据

       波浪号~ 后是分列依据

相比facet_wrap,facet_grid 用~  取代了 ncol、nrow

  • magins 用于分面的包含每个变量元素所有数据的数据组。 如qplot(carat,price,data=diamonds,alpha=I(0.2)+facet_grid(color~cut,margins = TRUE))
  •  

    space参数 配合scales使用,如果是fixed(默认) ,则所有小图的大小一致,如果为free,free_x,free_y ,小图的大小将按坐标轴的跨度比例进行设置。如

    qplot(carat,price,data=diamonds,alpha=I(0.2))+facet_grid(color~cut,space="free_x",scales="free_x")
  •  

    labeller 设置小图标签,

  • 两个以上的分组标准示例如下:  qplot(carat,price,data=diamonds,alpha=I(0.2))+facet_grid(color+clarity~cut) 

  •  

     

 

 

 

 

glimpse(mpg)

 

 p<-ggplot(mpg,aes(displ,cty))+geom_point();p

 

p+facet_grid(rows=vars(drv)) #将愿数据图按drv的值,分行 排列。

 

 

 

  p + facet_grid(cols = vars(cyl))  # 将愿数据图按cyl的值分列

 

 

  p+facet_grid(vars(drv),vars(cyl)) # 将原数据图按drv分行,cyl分列

 

 

要改变facet grid 的图顺序,需要用factor()改变变量水平的顺序(the order of variable levels)

 

 

mt<-ggplot(mtcars,aes(mpg,wt,colour=factor(cyl)))+geom_point() ; mt  

 

 

 

 

mt+facet_grid(vars(cyl),scales="free") #

 

 

 

 

ggplot(mpg,aes(drv,model))+geom_point()+facet_grid(manufacturer~.,scales="free",space="free")+theme(strip.text.y =element_text(angle=0) )

 

 

 

 

 

 

 mg<-ggplot(mtcars,aes(x=mpg,y=wt))+geom_point();mg

 

 

 

 

 mg+facet_grid(vs+am~gear,margins = TRUE)

 

 

 

 

mg+facet_grid(vs+am~gear,margins="am")

 

 

 

 

mg+facet_grid(vs+am~gear,margins = "vs")

 

> facet_wrap(facets,nrow=NULL,ncol=NULL,scales="fixed",shrink=TRUE,as.table=TRUE,drop=TRUE)

  facets: 分面参数,如 ~cut 表示用cut变量分面  

  nrow: 绘制图形的行数

  ncol: 绘制图形的列数,一般与nrow 只设定一个

  scales: 坐标刻度的范围,可以设定4种类型。

    fixed 表示所有小图均使用统一坐标范围

    free 每个小图按按各自数据范围自由调整坐标刻度范围

    free_x 自由调整x轴刻度范围

    free_y 自由调整y轴刻度范围

  shrinks 为TRUE(默认值)时,按统计后数据调整刻度范围,否则按统计前的数据设定坐标

  as.table 为TRUE 则按表格方式排列,即分组level最大值排在表格右下角,否则排在左上角

  drop TRUE(默认) 空的数据组不绘图

例如

   d.sub<-diamonds[sample(nrow(diamonds),500),] 

   head(d.sub,4) 

 

 theme_set(theme_bw())

 p<-ggplot(data=d.sub,aes(x=carat,y=price))

 p+geom_point()

 

  p+geom_point()+facet_wrap(~cut)

  

 

  p+geom_point()+facet_wrap(~cut,scales="free")+ggtitle("scales=free")

 

  p+geom_point()+facet_wrap(~cut,scales="free_y")+ggtitle("scales=free_y")

 

 

 

 

  

 

posted on 2022-03-02 15:35  BioinformaticsMaster  阅读(789)  评论(0编辑  收藏  举报

导航