这次我们来谈论下如何画子母图,参考推送:
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出来
网友评论