使用R语言我们比较常用的在幅图上绘制多个图形,使用
- par(mfrow)
- layout()
就能够在一幅图上绘制(排列)多个图形。比如:
以DoseFinding包中的biom数据集为例,我们在一幅图上输出biom数据集的箱线图和散点图:(先install.packages("DoseFinding")
)
library(DoseFinding)
data(biom)
par(mfrow = c(1,2))
boxplot(resp~dose, biom)
plot(biom)
得到biom数据集的箱线图和散点图:
现在目标是输出下面这张图,
如何做到呢?只需再设置几个步骤就可以:
- 使用
par(new=TRUE)
使后输出的图形叠加到原来的图形上
par(mfrow = c(1,1))
boxplot(resp~dose, biom)
par(new=TRUE)
plot(biom)
由上图可见,设置了par(new=TRUE)
之后,两幅图简单的叠加在一起了。接下来就是对两幅图进行调整。
2. 修改boxplot的箱体位置
设置boxplot的at
参数,指定box绘制的位置
boxplot(resp~dose, biom, at=unique(sort(biom$dose)))
par(new=TRUE)
plot(biom)
3. 修改boxplot的箱体大小
设置boxplot的boxwex参数,调整box宽的比例
boxplot(resp~dose, biom, at=unique(sort(biom$dose)), boxwex=0.04)
par(new=TRUE)
plot(biom)
4. 修改boxplot的横坐标范围
设置boxplot的xlim
参数
par(mfrow = c(1,1))
boxplot(resp~dose, biom, at=unique(sort(biom$dose)), boxwex=0.04 , xlim=c(0, 1))
par(new=TRUE)
plot(biom)
发现坐标还有点重叠,继续修改:
5. 隐藏第二幅图的坐标轴和标签
boxplot(resp~dose, biom, at=unique(sort(biom$dose)), boxwex=0.04 , xlim=c(0, 1))
par(new=TRUE)
plot(biom, xaxt="n", yaxt="n", bty="n", ann=F)
- 图形再美化一下
boxplot(resp~dose, biom, at=unique(sort(biom$dose)), boxwex=0.04 , xlim=c(0, 1),
col="lightblue", main="Overlapped Figure Demo")
par(new=TRUE)
plot(biom, xaxt="n", yaxt="n", bty="n", ann=F)
Done!