组合散点图
Combining scatterplots
我正在尝试将多个(四个)散点图组合成一个图(但不是散点图矩阵)。我正在使用 car
包的 scatterplot()
函数制作单独的散点图。我曾经能够使用 layout()
或 par()
函数组合四个图。但是,现在当我尝试在 Rstudio 中执行此操作时,它只会按顺序显示四个图。我不确定这是不是因为更新版本的 R 或 Rstudio。
下面是一个使用 mtcars 数据集的例子:
par(mfrow=c(2,2), oma=c(1,1,2,1), mar=c(4,4,0,1), cex.lab=1, cex.axis=0.8)
scatterplot(mpg ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="mpg", grid=F)
scatterplot(mpg ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="", grid=F)
scatterplot(hp ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="hp", ylab="mpg", grid=F)
scatterplot(hp ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="Weight", ylab="", grid=F)
我是 运行 R 3.4.2,RStudio 1.1.453,在 Windows 10。任何指针将不胜感激。
您可以尝试 cowplot
包中的 plot_grid
。请注意 cowplot
需要 R 3.5.0
。
编辑:澄清一下,您需要 GitHub
上的 cowplot
的开发版本
devtools::install_github("wilkelab/cowplot")
library(car)
library(gridGraphics)
library(cowplot)
par(xpd = NA, # switch off clipping, necessary to always see axis labels
bg = "transparent", # switch off background to avoid obscuring adjacent plots
oma = c(1, 1, 2, 1),
mar = c(4, 4, 0, 1),
mgp = c(2, 1, 0), # move axis labels closer to axis
cex.lab = 1,
cex.axis = 0.8
)
scatterplot(mpg ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="mpg", grid=F)
rec1 <- recordPlot() # record the previous plot
scatterplot(mpg ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="", grid=F)
rec2 <- recordPlot()
scatterplot(hp ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="hp", ylab="mpg", grid=F)
rec3 <- recordPlot()
scatterplot(hp ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="Weight", ylab="", grid=F)
rec4 <- recordPlot()
plot_grid(rec1, rec2, rec3, rec4,
labels = "AUTO",
hjust = 0, vjust = 1)
我正在尝试将多个(四个)散点图组合成一个图(但不是散点图矩阵)。我正在使用 car
包的 scatterplot()
函数制作单独的散点图。我曾经能够使用 layout()
或 par()
函数组合四个图。但是,现在当我尝试在 Rstudio 中执行此操作时,它只会按顺序显示四个图。我不确定这是不是因为更新版本的 R 或 Rstudio。
下面是一个使用 mtcars 数据集的例子:
par(mfrow=c(2,2), oma=c(1,1,2,1), mar=c(4,4,0,1), cex.lab=1, cex.axis=0.8)
scatterplot(mpg ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="mpg", grid=F)
scatterplot(mpg ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="", grid=F)
scatterplot(hp ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="hp", ylab="mpg", grid=F)
scatterplot(hp ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="Weight", ylab="", grid=F)
我是 运行 R 3.4.2,RStudio 1.1.453,在 Windows 10。任何指针将不胜感激。
您可以尝试 cowplot
包中的 plot_grid
。请注意 cowplot
需要 R 3.5.0
。
编辑:澄清一下,您需要 GitHub
上的cowplot
的开发版本
devtools::install_github("wilkelab/cowplot")
library(car)
library(gridGraphics)
library(cowplot)
par(xpd = NA, # switch off clipping, necessary to always see axis labels
bg = "transparent", # switch off background to avoid obscuring adjacent plots
oma = c(1, 1, 2, 1),
mar = c(4, 4, 0, 1),
mgp = c(2, 1, 0), # move axis labels closer to axis
cex.lab = 1,
cex.axis = 0.8
)
scatterplot(mpg ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="mpg", grid=F)
rec1 <- recordPlot() # record the previous plot
scatterplot(mpg ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="", ylab="", grid=F)
rec2 <- recordPlot()
scatterplot(hp ~ disp, data=mtcars, smooth=F, boxplots=F, xlab="hp", ylab="mpg", grid=F)
rec3 <- recordPlot()
scatterplot(hp ~ wt, data=mtcars, smooth=F, boxplots=F, xlab="Weight", ylab="", grid=F)
rec4 <- recordPlot()
plot_grid(rec1, rec2, rec3, rec4,
labels = "AUTO",
hjust = 0, vjust = 1)