1. 若干問題
1.1 分面和拼圖的適用范圍
分面:數(shù)據(jù)在一張表格上,存在若干個(gè)分類變量可以給數(shù)據(jù)分組,這時(shí)可以使用分面;
拼圖:已經(jīng)產(chǎn)生了多個(gè)圖(對(duì)象),需要拼在一起
1.2 facet_grid()和facet_wrap()的差異
facet_grid()本質(zhì)是二維; facet_wrap()本質(zhì)是一維

1.3 分面標(biāo)簽如何調(diào)整角度
1.4 并列與分面的比較
分面的一個(gè)優(yōu)勢(shì)是通過scales, space可以控制構(gòu)圖,見圖7.9
2. facet_grid()
mpg2 <- filter(mpg,mpg$cyl != 5 & mpg$drv %in% c("4","f"))
#不分面
ggplot(mpg2,aes(x=cty,y=hwy))+geom_point()+facet_null()
#一行多列
mpg2%>%ggplot(aes(cty,hwy))+geom_point()+facet_grid(.~mpg2$cyl)
#一列多行
mpg2%>%ggplot(aes(cty))+geom_histogram(binwidth = 2)+facet_grid(mpg2$cyl~.)
#多行多列
mpg2%>%ggplot(aes(cty,hwy))+geom_point()+facet_grid(mpg2$drv~mpg2$cyl)

2.1 邊際圖(與列聯(lián)表效果類似)
ggplot(mpg2,aes(cty,hwy))+geom_point()+geom_smooth(aes(color=drv),method = "lm",se=F)+
facet_grid(drv ~ cyl,margins = T)
#facet_grid(mpg2$drv ~ mpg2$cyl,margins = T) #不行

3. facet_wrap()
封裝分面(對(duì)于單個(gè)多水平變量非常有用,比如染色體數(shù)量)
ggplot(diamonds,aes(x=diamonds$carat,y=..density..))+geom_histogram()+
facet_wrap(.~diamonds$cut, ncol = 2)
4. 兩個(gè)參數(shù)
4.1 標(biāo)度控制scales
可選"fixed","free","free_x", "free_y"
分面之后,如果panel之間的x或y范圍差異大可以加上
library(reshape2)
em <- melt(economics,id="date")
em%>%ggplot(aes(date,value))+geom_line(aes(color=em$variable))
em%>%ggplot(aes(date,value))+geom_line()+
facet_grid(variable ~ .,scales = "free_y")


4.2 space(facet_grid才有)
可選:"fixed","free","free_x", "free_y"
以free_x為例,每列的寬度與該列的標(biāo)度范圍成比例
mpg3 <- within(mpg2, {
model <- reorder(model, cty)
manufacturer <- reorder(manufacturer, -cty)
}) #這種內(nèi)在的排序可以學(xué)習(xí)一下
models <- ggplot(mpg3,aes(cty,model))+geom_point()
models
models+facet_grid(manufacturer~.,scales = "free",space = "free")

5. 對(duì)于連續(xù)型變量如何進(jìn)行分面?
首先需要將其轉(zhuǎn)換為離散型(這種思想在https://mp.weixin.qq.com/s/N5QU3X8IgKdVbOBjwpmcPg寫到過)
cut_interval(x,length = 1)#控制每部分的長(zhǎng)度一致,這里長(zhǎng)度都是1
cut_interval(x,n=10)#劃分為n個(gè)長(zhǎng)度相同的部分, 值域除以n為每部分的范圍
cut_number(x,n=10)#劃分為n個(gè)有(大概)相同數(shù)目點(diǎn)的部分
mpg2$displ_ww <- cut_interval(mpg2$displ,length = 1)
mpg2$displ_wn <- cut_interval(mpg2$displ,n=6)
mpg2$displ_nn <- cut_number(mpg2$displ,n=6)
plot <- ggplot(mpg2,aes(cty,hwy))+geom_point()+labs(x=NULL,y=NULL)
plot+facet_wrap(~displ_ww,nrow = 1)
plot+facet_wrap(~displ_wn,nrow = 1)
plot+facet_wrap(~displ_nn,nrow = 1)