基佬的屁股和科学家的屎,之间的共同点是…!》这篇推文发表之后,发现大家对屎尿屁还是蛮有兴趣的,画屎除了展示的emojifont包之外,也提到了ggimage包,其实用ggimage包更有趣!这里也演示一下,一起来玩屎,看看自己到底是搅屎棍还是化粪池!玩屎玩出花来。

先来一张线性拟合的图:

set.seed(123)
iris2 <- iris[sample(1:nrow(iris), 30), ]
model <- lm(Petal.Length ~ Sepal.Length, data = iris2)
iris2$fitted <- predict(model)

iris3 <- iris2[abs(iris2$Petal.Length-iris2$fitted) > 0.5,]
p <- ggplot(iris2, aes(x = Sepal.Length, y = Petal.Length)) +
    geom_point() +
    geom_linerange(aes(ymin = fitted, ymax = Petal.Length),
                   data=iris3, colour = "purple") +
    geom_abline(intercept = model$coefficients[1],
                slope = model$coefficients[2])
p

Continue reading

让我们画个黑板报吧

上次推送的《geom_bgimage》,竟然有人问说用ggplot2怎么搞。明明我的例子就是了,虽然用的是ggtree的例子,但与ggplot2何异?

require(ggplot2)
require(ggimage)

d = data.frame(x=LETTERS[1:3], y = 1:3)
d$y2 = rev(cumsum(rev(d$y)))

p = ggplot(d, aes(x=1, y, fill=x)) + geom_col(color='white') +  
 geom_bgimage("img/blackboard.jpg") + theme_void() +
 coord_polar("y") + theme(legend.position='none') + 
 geom_text(aes(y = y2 - y/2, label=x),family='xkcd', size=8) + 
 xlim(-1, NA) + scale_fill_viridis_d()

Continue reading

说到世界杯,我是不追的,但1998年法国世界杯我还是有印象的,那时候读初中的我,一直在集邮,那年代没有网购,通讯基本靠吼,当年的我已经是个老司机了,通过邮政汇款,买了好多东西,包括1998年世界杯从法国寄往中国的首日封,当然锁在老家的柜子里,尘封多年,所以我现在也没办法随手拍一张照片给大家分享。

另一件事,同样是1998年,那年升高一,开学第一天,老师让大家自我介绍一下,有位帅哥在见面第一天,就立了flag,说自己中考没考好,是因为看世界杯了,他高考必定要怎么样怎么样,毕竟世界杯是四年一次。你一个交钱进学校的学渣,牛逼吹大了,我印象深刻,所以我后来留意了一下这家伙高考上了那家高校,结果是「中山大学网络教育学院」,也就是电视大学!真的是情节反转如疾风!

转发5个群,Y叔送你一顶帽子》这一篇文章写的是加圣诞帽子,但你要加个C罗、梅西,有什么差别吗?没有!你要加某球队的队服,有什么差别吗?没有。所以要制作世界杯专属头像,已然可以用ggimage纯代码生成。

Continue reading

ggimage 0.1.4 is available on CRAN.

This release introduces a new function called ggbackground for setting image background as ggplot canvas.

require(magick)
require(ggplot2)
require(ggimage) 
require(ggplot2)
p <- ggplot(iris) + aes(x = Sepal.Length, y = Sepal.Width, color=Species) + 
    geom_point(size=5) + theme_classic()

Suppose we have the above ggplot object, p, the only thing we need to do is passing the p with an image file name (local or remote) to ggbackground, as demonstrated below:

Continue reading

require(ggplot2)
 p <- ggplot(iris) + aes(x = Sepal.Length, y = Sepal.Width, color=Species) + 
    geom_point(size=5) + theme_classic()

首先我们有一个图,是用ggplot2画的,上面这图大家太熟悉,不打印出来都知道是什么了。

我在最新版的ggimage中加入了一个ggbackground的函数,我随便从网上找一张iris的图片,我们把pimg同时传给ggbackground就好了,非常容易,于是图的内容还是一样,但加了一张我们给定的图片做为背景。

require(ggimage) 
img = "https://assets.bakker.com/ProductPics/560x676/10028-00-BAKI_20170109094316.jpg"
ggbackground(p, img)

Continue reading

给你一顶帽子

圣诞节期间,一个个在@微信官方,要加圣诞帽,这让人想起了以前:

今天是马化腾的生日,转发5个群,自动开通一个月的QQ会员

这班玩QQ长大的孩子,现在变成了玩微信的油腻中年了。

做为biobabble公众号的粉丝,我觉得你们是有能力用两三行R代码来给自己加个帽子的。由于我在过圣诞节,所以这篇文章没有能够及时推送出来,就当马后炮吧,不合时宜地调侃一下大家。

Continue reading

大量的生信公众号在各种linux入门、perl入门、python入门、R入门、软件安装、跑跑示例代码、流程。我自己平时根本不会去看这些生信号,在《s01 - Counting DNA Nucleotides》一文发出去后,就被爪哥说不能跟着走低端路线,囧rz…

还好我多半写的是自己的东西,目前还没有掉进「低端」的坑里,今天继续画图,唯有赏心悦目的图能抚慰人心。

我写了一个包叫《ggimage:ggplot2中愉快地使用图片》,从此图上嵌图(ggplot对象)或图片变得轻而易举。某一天写着玩,写了个《geom_pokemon: 使用pokemon画图》的图层,引起了人民群众的尖叫,国外有妹纸用来可视化NBA数据《大开眼界+多图慎点:Pokémon x NBA and other fun with ggimage》,国内有汉子用来可视化复旦大学考研的报考专业《你的专业是那一只Pokémon神兽?》。

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou