Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在图像顶部绘制多个ggplot2_R_Ggplot2_Lattice - Fatal编程技术网

R 在图像顶部绘制多个ggplot2

R 在图像顶部绘制多个ggplot2,r,ggplot2,lattice,R,Ggplot2,Lattice,我有一个基于ggplot2的定制绘图函数 我现在想做的是,用这个画几个图 函数位于背景图像之上(作为png加载) 我不想将绘图放置在常规网格上,而是 在图像上的选定位置 (此类图的一个示例如图所示 ) 在我看来,我需要在不同的环境中绘制每个绘图,以及在图像上选择坐标放置这些环境的方法 有人能告诉我正确的软件包/教程/博客等吗 这有什么用 真诚地, Halldór通过ggplot查看嵌入式绘图: 和ggsubplot-包 或者通过-ggplot2::annotation\u光栅“手动”完成此操作

我有一个基于ggplot2的定制绘图函数

我现在想做的是,用这个画几个图 函数位于背景图像之上(作为png加载)

我不想将绘图放置在常规网格上,而是 在图像上的选定位置

(此类图的一个示例如图所示 )

在我看来,我需要在不同的环境中绘制每个绘图,以及在图像上选择坐标放置这些环境的方法

有人能告诉我正确的软件包/教程/博客等吗 这有什么用

真诚地,
Halldór

通过ggplot查看嵌入式绘图: 和
ggsubplot
-包

或者通过-
ggplot2::annotation\u光栅“手动”完成此操作
拍摄这张照片:

require(ggplot2)
需要(png)
图书馆(RCurl)
myurl使用一种示例性方法:

library(png)
ima <- readPNG("C:/Users/MyPC/Desktop/rus.png")
png <- "C:/Users/MyPC/Desktop/rus.png"
ima <- readPNG(png)
library(ggplot2)

tm <- theme(
    panel.background = element_rect(fill = "transparent",colour = "black"), # or theme_blank()
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    plot.background = element_rect(fill = "transparent",colour = NA)
)

plot.new()
lim <- par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])

library(grid)
vp <- viewport(.25, 0.65, width =.3, height = .3)
pl <- ggplot(mtcars, aes(x = mpg)) + geom_histogram() + tm
print(pl, vp = vp)

pl2 <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_line() + tm
vp2 <- viewport(.75, 0.65, width =.3, height = .3)
print(pl2, vp = vp2)

pl3 <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_line() + tm
vp3 <- viewport(.5, 0.4, width =.3, height = .3)
print(pl3, vp = vp3)
库(png)

ima像这样过于笼统的问题在SO中被认为是离题的,特别是因为它需要软件包记录和教程。也许这些规则对其他一个stackexchange场地的要求会不那么严格。为什么不在地理信息系统论坛上回顾一下这些术语呢?如果我没弄错的话,那是图像覆盖了一幅图,而不是图像覆盖了一幅图,谢谢。我的问题可能可以通过嵌入图来解决。感谢您的链接。@baptiste它取决于ggplot命令的顺序(即添加图层的顺序)。如果在
annotation\u graster
之前调用
geom\u point
,图像将绘制在点上方,其他点将绘制在图像上方。或者
annotation\u custom(ggplotGrob(p))
谢谢,似乎就是这样!使用
grid.graster
而不是
rasterImage
,可能更有意义;通常,最好避免混合基本图形和网格图形。
library(png)
ima <- readPNG("C:/Users/MyPC/Desktop/rus.png")
png <- "C:/Users/MyPC/Desktop/rus.png"
ima <- readPNG(png)
library(ggplot2)

tm <- theme(
    panel.background = element_rect(fill = "transparent",colour = "black"), # or theme_blank()
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    plot.background = element_rect(fill = "transparent",colour = NA)
)

plot.new()
lim <- par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])

library(grid)
vp <- viewport(.25, 0.65, width =.3, height = .3)
pl <- ggplot(mtcars, aes(x = mpg)) + geom_histogram() + tm
print(pl, vp = vp)

pl2 <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_line() + tm
vp2 <- viewport(.75, 0.65, width =.3, height = .3)
print(pl2, vp = vp2)

pl3 <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_line() + tm
vp3 <- viewport(.5, 0.4, width =.3, height = .3)
print(pl3, vp = vp3)