R小tip(三) 子母图画法

这次我们来谈论下如何画子母图,参考推送:
https://www.jianshu.com/p/dfa4727049a6
采用cowplot的方法我上次已经叙述过了,这次将不在叙述
这次参考的是这篇:
https://www.jianshu.com/p/fd804fbbaa2a

基于基础作图

#主图
par(fig = c(0,1,0,1))
barplot(height = 10:1)
#小图
par(fig = c(0.55, 1, 0.5, 1), new = T)  
barplot(height = 5:1) 
image.png

这个的原理是用par()函数指定图的位置(坐标),然后映射上去

还有就是利用R包:

library(TeachingDemos)
barplot(height = 10:1)
subplot( 
  barplot(height = 5:1), 
  x=grconvertX(c(0.6,1), from='npc'), #调整小图的横坐标位置
  y=grconvertY(c(0.5,1), from='npc'), #调整小图的纵坐标位置
  type='fig', pars=list(mar=c(1.5,1.5,0,0))) 
image.png

基于ggplot

这个我直接盗用了原推送的源代码,若有侵权我立马删

library(ggplot2) 
library(grid)
data(iris)

chart1 <- ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Length, color = Species, shape = Species)) + geom_point() + theme_bw()
chart1
chart2 <- ggplot(data = iris, aes(x = Species, y = Sepal.Length, color = Species)) + geom_boxplot() + guides(color = FALSE ) + xlab('') + ylab('') + theme_bw()
print(chart2, vp = viewport(x = 0.65, y = 0.25, width = 0.3, height = 0.25)) #这里指定chart2 的位置和长宽,用于映射到主图
image.png

ggplot的原理是图层叠加,我们完全可以画两幅图,先出主图chart1 ,然后将chart2按照自己设计的规格给print出来

你可能感兴趣的:(R小tip(三) 子母图画法)