在一个 PNG 图中组合 ggplot 和 plotRGB
Combining a ggplot and plotRGB in one PNG plot
我正在尝试将 ggplot 结果和空间栅格的 plotRGB 合并到一个图中并将其写入 PNG。我已经找到了如何组合 ggplots 或做多图,但我不知道如何开始这个特定的设置。此代码还集成在 for 循环中,这意味着需要使用打印语句来实际绘制 ggplot(在 PNG 或 Rstudio 中)。
library(raster)
library(ggplot2)
plotRGB(brick(raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100))),r=1,g=2,b=3,stretch="lin")
ggdata=data.frame("x"=seq(100),"y"=rnorm(100))
ggplot(ggdata,aes(x=x,y=y))+
geom_line()
你们中有谁知道如何将这两个组合成 PNG(最好用 for 循环显示,但不是必需的)?
因为 plotRGB
使用 base
图形而 ggplot2
使用 grid
图形,我们可以使用 gridBase
包来组合它们。此代码似乎有效
require("raster")
require("ggplot2")
require("gridBase")
require("grid")
require("gridExtra")
png("gg.png", width = 600, height = 1200)
grid.newpage()
pushViewport(viewport(width=1, height=0.5, y = .75))
par(omi=gridOMI())
par(mfrow=c(2, 2), mfg=c(1, 1), mar=c(3, 3, 1, 0))
for (i in 1:3) {
plotRGB(brick(raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100))),r=1,g=2,b=3,stretch="lin")
}
upViewport()
pushViewport(viewport(width=1, height=0.5, y = .25))
ggdata=data.frame("x"=seq(100),"y"=rnorm(100))
grid.draw(ggplotGrob(
ggplot(ggdata,aes(x=x,y=y))+
geom_line() ))
upViewport()
dev.off()
这会产生以下 png:
我建议你熟悉使用过的包的文档,以便能够以你想要的方式绘制你需要的东西:)
我正在尝试将 ggplot 结果和空间栅格的 plotRGB 合并到一个图中并将其写入 PNG。我已经找到了如何组合 ggplots 或做多图,但我不知道如何开始这个特定的设置。此代码还集成在 for 循环中,这意味着需要使用打印语句来实际绘制 ggplot(在 PNG 或 Rstudio 中)。
library(raster)
library(ggplot2)
plotRGB(brick(raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100))),r=1,g=2,b=3,stretch="lin")
ggdata=data.frame("x"=seq(100),"y"=rnorm(100))
ggplot(ggdata,aes(x=x,y=y))+
geom_line()
你们中有谁知道如何将这两个组合成 PNG(最好用 for 循环显示,但不是必需的)?
因为 plotRGB
使用 base
图形而 ggplot2
使用 grid
图形,我们可以使用 gridBase
包来组合它们。此代码似乎有效
require("raster")
require("ggplot2")
require("gridBase")
require("grid")
require("gridExtra")
png("gg.png", width = 600, height = 1200)
grid.newpage()
pushViewport(viewport(width=1, height=0.5, y = .75))
par(omi=gridOMI())
par(mfrow=c(2, 2), mfg=c(1, 1), mar=c(3, 3, 1, 0))
for (i in 1:3) {
plotRGB(brick(raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100)),
raster(matrix(rnorm(10000),ncol=100))),r=1,g=2,b=3,stretch="lin")
}
upViewport()
pushViewport(viewport(width=1, height=0.5, y = .25))
ggdata=data.frame("x"=seq(100),"y"=rnorm(100))
grid.draw(ggplotGrob(
ggplot(ggdata,aes(x=x,y=y))+
geom_line() ))
upViewport()
dev.off()
这会产生以下 png:
我建议你熟悉使用过的包的文档,以便能够以你想要的方式绘制你需要的东西:)