Следовал этому примеру от Вейхуана Вонга на Объединение графиков, созданных R base, lattice и ggplot2 , для создания панели 2 на 2 с использованием gridBase. Однако, поскольку у меня недостаточно опыта работы с кодом и после некоторой пробной версии произошла ошибка ... не повезло ..
Воспроизведение кода, если у меня только один базовый участок, все в порядке:
library(grid)
library(gridBase)
library(lattice)
library(ggplot2)
png(filename = paste0("plots/test4panels.png"),
width = 1250, height = 1000, units = "px", res=250, pointsize=4)
grid.newpage()
pushViewport(viewport(layout = grid.layout(2, 2)))
# base graphics
vp <- pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 1))
par(omi = gridOMI())
boxplot(mpg ~ cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon", data = mtcars)
popViewport()
# lattice plot
vp <- pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 2))
par(fig = c(0.9, 1, 0.6, 0.9))
p <- bwplot(~ mpg | cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon",
data = mtcars)
print(p, vp = vp, newpage = FALSE)
popViewport()
# ggplot
vp <- pushViewport(viewport(layout.pos.row = 2, layout.pos.col = 1))
mtcars$cyl <- as.factor(mtcars$cyl)
p <- qplot(cyl,
mpg,
data = mtcars,
geom = ("boxplot"),
fill = cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
print(p, vp = vp, newpage = FALSE)
popViewport()
# base graphics
# ggplot
vp <- pushViewport(viewport(layout.pos.row = 2, layout.pos.col = 2))
mtcars$cyl <- as.factor(mtcars$cyl)
p <- qplot(cyl,
mpg,
data = mtcars,
geom = ("boxplot"),
fill = cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
print(p, vp = vp, newpage = FALSE)
popViewport()
# base graphics
dev.off()
Однако, если я попытаюсь сделать два графика, это не сработает. Я предполагаю, что ошибка может быть с par (omi = gridOMI ()). Любая помощь?
library(grid)
library(gridBase)
library(lattice)
library(ggplot2)
png(filename = paste0("plots/test4panels_2basics.png"),
width = 1250, height = 1000, units = "px", res=250, pointsize=4)
grid.newpage()
pushViewport(viewport(layout = grid.layout(2, 2)))
# base graphics
vp <- pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 1))
par(omi = gridOMI())
boxplot(mpg ~ cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon", data = mtcars)
popViewport()
# base graphics
vp <- pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 2))
par(omi = gridOMI())
boxplot(mpg ~ cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon", data = mtcars)
popViewport()
# lattice plot
vp <- pushViewport(viewport(layout.pos.row = 2, layout.pos.col = 1))
par(fig = c(0.9, 1, 0.6, 0.9))
p <- bwplot(~ mpg | cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon",
data = mtcars)
print(p, vp = vp, newpage = FALSE)
popViewport()
# ggplot
vp <- pushViewport(viewport(layout.pos.row = 2, layout.pos.col = 2))
mtcars$cyl <- as.factor(mtcars$cyl)
p <- qplot(cyl,
mpg,
data = mtcars,
geom = ("boxplot"),
fill = cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
print(p, vp = vp, newpage = FALSE)
popViewport()
# base graphics
dev.off()
```