分享

花式打水印

 微笑如酒 2018-01-02


正如我在《用R画meme ;)》里说的,meme包就可以拿来画,当然这个包是设计来画meme的,所以文本只会打在中间,如果你想在右下角之类的,不好意思,我没提供选项让你调文本位置,氮素,meme依然是你的好帮手,怎么说呢,meme不单能帮你读图片,还能用grid画出来,这意味着你可以用grid.text随便加个文本就OK了。

实例演示一发:

library(meme)u <- system.file('angry8.jpg',="" package='meme' )x=""><- meme(u)print(x)grid.text('biobabble',="" x=".9," y=".05,"  =""  gp="gpar(col='white'," cex="">

由于提问说到ggplot2,这里讲一下。meme要支持ggplot2的输出也容易,不过我没看出必要性,所以懒得搞,要想用meme,你的ggplot2输出要先写图片。

抵制BMC,匹夫有责


如果想要ggplot2直接加水印,这有何难,不就是打个文本是吧?如果你想到geom_text或者annotate('text')之类的,赶紧面壁去,水平太差,这些只能打在画图区域里。你应该想到的是labs(caption=XXX),但是这里也有个问题,caption是和画图区域对齐的(当然可以用theme移出来),你的图legend区域的大小是不一样的,或者有些图legend在画图区域之外,有些在内部,这会导致你加的水印在不同的图中相对的位置是不统一的。怎么办?!上面已经有答案了,还是一样的grid.text,因为ggplot2也是用grid画的,所以通用。

下面这个代码,黑色的biobabble是通过caption画的,相对位置是没法保障的,但红色的biobabble通过grid.text,位置在整张图片中,是固定的,在不同的图片中,是可以统一的。

p = ggplot(iris, aes(Sepal.Width, Petal.Width)) +    geom_point(aes(color=Species))p + labs(caption='biobabble')grid.text('biobabble', x=.9, y=.05,    gp=gpar(col='firebrick', cex=1.2))


  • grid是ggplot2成功背后的男人,笑哭🤣~

  • 用Y叔的shadowtext包,可以打出有阴影效果的水印,你懂的🍻

  • 用Y叔的emojifont包,可以打上emoji或者图标logo(比如微信的水印有微信的logo)👻

  • 用Y叔的ggimage包,你甚至于可以用图片来当水印🤡

  • Y叔才是花样打水印背后的男人🙈

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多