使用 `+` 运算符将徽标添加到 ggplot 页脚

cor*_*ory 3 r ggplot2

所以,我想在我的 ggplot 中添加一个标志页脚,但我想通过一个我可以使用+运算符的函数来做到这一点,所以我可以这样做:qplot(1:10, 1:10) + add_mylogo()

我可以用这个得到我想要的:

library(magick)
library(ggplot2)
mylogo <- image_scale(image_read("https://upload.wikimedia.org/wikipedia/commons/f/f7/Stack_Overflow_logo.png"), "180")
qplot(1:10, 1:10) + labs(caption="")
grid::grid.raster(mylogo, x = .97, y = .02, just = c('right', 'bottom'), width = unit(1.2, 'inches'))
Run Code Online (Sandbox Code Playgroud)

其中产生:

在此处输入图片说明

我的问题是我想+用来将它添加到情节中。

然后我尝试了这个:

library(cowplot)
library(magick)
library(ggplot2)
mylogo <- image_scale(image_read("https://upload.wikimedia.org/wikipedia/commons/f/f7/Stack_Overflow_logo.png"), "380")
qplot(1:3, 1:3)+ labs(caption="") +
  draw_image(mylogo, x=3, y = .2, hjust=.7, vjust=0, scale = .5, clip=TRUE)
Run Code Online (Sandbox Code Playgroud)

其中产生:

在此处输入图片说明

所以现在我让它与+操作员一起工作,但我无法弄清楚如何使用任何类型的相对定位。我看到这篇关于使用相对定位的帖子annotate并尝试过,但它不起作用

qplot(1:3, 1:3)+ labs(caption="") +
  draw_image(mylogo, x = -Inf, y = Inf, hjust=.7, vjust=0, scale = .5, clip=TRUE)
Error in if (rasterRatio > vpRatio) { : 
  missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

所以第一个选项 usinggrid适用于相对定位,但不适用于+运算符,第二个选项 usingcowplot适用于+运算符,但不适用于相对定位。有什么办法可以两者兼得吗?

Axe*_*man 6

您可以考虑使用ggtext

library(ggplot2)
library(ggtext)
qplot(1:3, 1:3) +
  labs(caption = "<img src='https://upload.wikimedia.org/wikipedia/commons/f/f7/Stack_Overflow_logo.png' width='100'/>") +
  theme(plot.caption = element_markdown())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明