2014-11-17 88 views
0

我已经基于GGPLOT2几个GGPLOT2地块的图像

这个漂亮的自定义绘图功能我现在想要做的,是把与背景图像的顶部这 功能(画几个图作为png加载)。

我不想将图放置在一个规则的网格上,而是在图像上的选定位置上放置 。

在我看来,我需要让每一个独特的环境中抽出我的阴谋,并把这些环境的方法(这样的情节的例子可以在 http://www.climatechange2013.org/images/figures/WGI_AR5_Fig10-21.jpg可以看出)在图像上的选择坐标处。

任何人都可以指导我正确的包/教程/博客/等等, 可以用于这个?

真诚, 哈尔多尔

+0

这样过于宽泛的问题被认为是题外话在SO,尤其如此,因为它要求包装区域经济共同体和教程。也许这些规则在其他堆栈交换场地中的规则不那么严格。为什么不在GIS论坛上查看条款? –

回答

1

必须通过ggplot看看嵌入式图: http://vita.had.co.nz/papers/embedded-plots.pdfggsubplot -Packages。

或者“手动”通过 - ggplot2::annotation_raster
采取这种图片:http://pixabay.com/static/uploads/photo/2012/04/16/12/34/squares-35798_640.png

require(ggplot2) 
require(png) 
library(RCurl) 
myurl <- "http://pixabay.com/static/uploads/photo/2012/04/16/12/34/squares-35798_640.png" 
mypng <- readPNG(getURLContent(myurl)) 

df <- data.frame(x = rnorm(10), y = rnorm(10)) 

ggplot(df, aes(x=x,y=y)) + 
    annotation_raster(mypng, xmin=min(df$x), xmax = max(df$x), ymin=min(df$y), ymax=max(df$y)) + 
    geom_point() 

现在geom_...你愿意,你可以添加任何层。可能需要相应地修改xmin, xmax, ymin, ymax

enter image description here

+0

如果我没有误认为是情节中的图像,而不是图像上的情节 – baptiste

+0

谢谢。我的问题可能可以通过嵌入式图解来解决。感谢您的链接。 –

+0

@baptiste它取决于ggplot命令的顺序(即添加图层的顺序)。如果你在'annotation_raster'之前调用'geom_point',则图像被绘制在点上方,否则点在图像上方。 – Daniel

1

使用的示范性image这里一个办法:

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) 

enter image description here

+0

或'annotation_custom(ggplotGrob(p))' – baptiste

+0

谢谢,这好像就是它! –

+0

它可能会更有意义的使用'grid.raster'而不是'rasterImage';通常最好避免混合底座和网格图形。 – baptiste