Adding an image to the ggplot header

I want to add an image or SVG to the ggplot header.

enter image description here

This is what I am aiming for:

enter image description here

get an eye " here "

Below is my best attempt.

I am not happy with this because I have to try and make a lot of mistakes in order to get the right position. not quite a general solution.

library(ggplot2) library(raster) library(grid) img1 <- as.matrix(raster(system.file("external/rlogo.grd", package="raster"))) img1[img1>128] <- NA img1[img1>0] <- 0 image(img1) g1 <- rasterGrob(img1, interpolate=TRUE) p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + ggtitle(" <- dat rLogo tho") + annotation_custom(g1,xmin = 1.2,1.6,35.5,38) gt <- ggplot_gtable(ggplot_build(p)) gt$layout$clip[gt$layout$name == "panel"] <- "off" grid.draw(gt) 
+6
source share
1 answer

Here is my attempt to use a very serious png eye :

 library(ggplot2) library(grid) library(dplyr) library(gtable) eyeImg <- png::readPNG("serious_eye.png") %>% rasterGrob(interpolate = TRUE) p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + ggtitle("") # to create space for title # convert to grob gt <- ggplotGrob(p) # create new title as a tableGrob with separate cells for image & text new.title <- gtable(widths = grobWidth(gt), heights = grobHeight(gt)) %>% gtable_add_grob(grobs = eyeImg, t = 1, l = 1) %>% gtable_add_cols(widths = unit(1, "null")) %>% gtable_add_grob(textGrob(label = "<- very serious eye", x = unit(0, "npc"), just = "left"), t = 1, l = 2) %>% # optional: adda fixed amt of space between image & text gtable_add_col_space(width = unit(5, "pt")) # dev.off(); grid.draw(new.title) # assign new title back to gt gt$grobs[[which(gt$layout$name == "title")]] <- new.title grid.draw(gt) 

plot

0
source

Source: https://habr.com/ru/post/1266852/


All Articles