【问题标题】:Add Logo to ggplot footer with `+` operator使用 `+` 运算符将徽标添加到 ggplot 页脚
【发布时间】:2019-11-15 19:06:58
【问题描述】:

所以,我想在我的 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'))

产生:

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

然后我尝试了这个:

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)

产生:

所以现在我让它与+ 运算符一起使用,但我不知道如何使用任何类型的相对定位。我看到this post关于使用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

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

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    你可以考虑使用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())
    

    【讨论】:

      【解决方案2】:

      您使用draw_image 的方式旨在使用绘图坐标,而不是相对定位,如您在draw_image help examples 中所见。要使用相对定位,您必须稍微更改代码,首先添加图像,然后在 draw_plot 调用中添加绘图:

      ggdraw() +
        draw_image(mylogo, scale = 0.2, x = 0.38, y = -0.45) +
        draw_plot(
          qplot(1:3, 1:3)+ labs(caption="") +
            theme(panel.background = element_blank(), plot.background = element_blank())
        )
      

      在我的测试中,定位似乎是相对于图的中心 (x = 0, y = 0),所以你需要负值在 y 中向下或在 x 中离开。 另一个“问题”是之前添加了logo,所以你必须将绘图或面板背景转换为透明或删除它们。

      【讨论】:

        猜你喜欢
        • 2022-11-23
        • 1970-01-01
        • 2019-08-21
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-05
        相关资源
        最近更新 更多