我有基于ggplot2的漂亮的自定义绘图功能
我现在要做的是用这个绘制几个图 功能在背景图像之上(以png格式加载)。
我不想将地块放在常规网格上,而是 在图像上的选定位置。
(可以看到这种情节的一个例子 http://www.climatechange2013.org/images/figures/WGI_AR5_Fig10-21.jpg)
在我看来,我需要在不同的环境中绘制每个绘图,以及将这些环境放置在图像的选定坐标上的方法。
任何人都可以指引我使用正确的软件包/教程/博客/等 可能有用吗?
此致 哈尔多尔
答案 0 :(得分:1)
通过ggplot查看Embedded Plots:
http://vita.had.co.nz/papers/embedded-plots.pdf
和ggsubplot
- 包裹。
或者通过 - 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
。
答案 1 :(得分: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)