??本篇和R for Data Science中關(guān)于limits的部分是一樣的略吨,之所以再寫一遍僅僅是個人有了新的感悟之后想用不同的組織語言重新總結(jié)以下栖忠。
??scale limits和coordinate system limits的區(qū)別:兩者實現(xiàn)的效果是x軸和y軸的坐標范圍一致,但plot展示的數(shù)據(jù)信息已經(jīng)完全不一樣了炫刷。
??究其原因是兩者的工作方式不同:設(shè)置scale limits,超過設(shè)置范圍的數(shù)據(jù)被扔掉(ggplot2的默認行為)缩功;這是coordinate system limits,仍然使用所有的數(shù)據(jù)(full data)熔酷,但只展示plot的一部分(zoom in)皇帮。
base <- ggplot(mpg, aes(drv, hwy)) +
geom_hline(yintercept = 28, colour = "red") +
geom_boxplot()
base
p2<-base + coord_cartesian(ylim = c(10, 35)) # works as expected
p3<- base + ylim(10, 35) # distorts the boxplot
#> Warning: Removed 6 rows containing non-finite values (stat_boxplot).
ggpubr::ggarrange(base,p2,p3,nrow=1)
??限制scale limits的同時又想使用full data,可以用
scale_y_continous()
的oob
(oob=out of boundary)參數(shù)顾彰。但p2
和 p4
還是有些許的差別。
# default oob=scales::censor (刪減)
# scales::squish (將邊界外的值壓到range內(nèi))
p4<-base + scale_y_continuous(limits=c(10,35),oob = scales::squish)
ggpubr::ggarrange(base,p2,p3,p4,nrow=1)