如何在ggplot2的绘图区域外添加图像徽标.从'grid'包中尝试了rasterGrob函数,但是它保留了绘图区域内的图像.
这是启动脚本:
library(ggplot2) library(png) library(gridExtra) library(grid) gg <- ggplot(df1, aes(x = mpg, y = wt)) + theme_minimal() + geom_count() + labs(title = "Title Goes Here", x = "", y = "") img <- readPNG("fig/logo.png")
这是我正在寻找的结果.
我可以在右侧添加注释,但左侧的徽标是我受到挑战的地方.
您可以添加元素,annotation_custom
但需要关闭剪裁,以便图像在绘图区域之外显示.我稍微改变了你的例子,以使其可重复.
library(ggplot2) library(png) library(gridExtra) library(grid) gg <- ggplot(mtcars, aes(x = mpg, y = wt)) + theme_minimal() + geom_count() + labs(title = "Title Goes Here", x = "", y = "") img = readPNG(system.file("img", "Rlogo.png", package="png")) gg = gg + annotation_custom(rasterGrob(img), xmin=0.95*min(mtcars$mpg)-1, xmax=0.95*min(mtcars$mpg)+1, ymin=0.62*min(mtcars$wt)-0.5, ymax=0.62*min(mtcars$wt)+0.5) + annotation_custom(textGrob("Footer goes here", gp=gpar(col="blue")), xmin=max(mtcars$mpg), xmax=max(mtcars$mpg), ymin=0.6*min(mtcars$wt), ymax=0.6*min(mtcars$wt)) + theme(plot.margin=margin(5,5,30,5)) # Turn off clipping gt <- ggplot_gtable(ggplot_build(gg)) gt$layout$clip[gt$layout$name=="panel"] <- "off" grid.draw(gt)
另一个选择是使用ggplot的caption
功能来添加文本页脚,这节省了一些代码:
gg = gg + annotation_custom(rasterGrob(img), xmin=0.95*min(mtcars$mpg)-1, xmax=0.95*min(mtcars$mpg)+1, ymin=0.62*min(mtcars$wt)-0.5, ymax=0.62*min(mtcars$wt)+0.5) + labs(caption="Footer goes here") + theme(plot.margin=margin(5,5,15,5), plot.caption=element_text(colour="blue", hjust=1.05, size=15)) # Turn off clipping gt <- ggplot_gtable(ggplot_build(gg)) gt$layout$clip[gt$layout$name=="panel"] <- "off" grid.draw(gt)