美文网首页
R语言 ggplot2 中为分面添加不同注释

R语言 ggplot2 中为分面添加不同注释

作者: 风知秋 | 来源:发表于2022-12-22 16:48 被阅读0次

    R语言中分面是一个很好用的功能,尤其是在处理多组数据时。可以很好地将图分割成多个分面,展现数据的子集特征。

    比如说:

    ggplot(mpg, aes(x=displ, y=cty)) + geom_point() 

    以上可以获得一个散点图,但如果想看每一个变量特征下,另两个变量之间的相互关系,就可以使用分面。这里要用到的函数 facet_wrap

    ggplot(mpg, aes(x=displ, y=cty)) + geom_point() + facet_wrap(~class)

    每一行每一列分别有多少个图,可以进行指定,比如 nrow=2。

    ggplot(mpg, aes(x=displ, y=cty)) + geom_point() + facet_wrap(~class, nrow=2)

    以上不是我这里想要说的,通过查询 facet_wrap 可以很简单地了解该函数的常见用法。

    很多时候,我们会想在图中添加注释,比如加一个箭头、文字、公式、阴影等,这个通过简单查询也是可以实现的。

    我一开始查到的是 annotate 函数,可以指定文字、阴影、线段或箭头等;

    annotate('text', x=1.2, y=7.5, label=expression(-log[10]*'(p value)'), size=8, color='red') 

    annotate("rect", xmin=15, xmax=20, ymin=-Inf, ymax=Inf, alpha=0.3, fill="blue") 

    annotate("segment", x=2.064, xend=2.064, y=0.25, yend=0.1, size=1.2, colour="blue", face="bold", arrow=arrow(length=unit(0.3, "cm")))

    以上提供了三种不同的注释类型,可以指定位置、颜色、透明度等等信息,感兴趣可以进一步查询,这里简单举个例子;

    ggplot(mpg, aes(x=displ, y=cty)) + geom_point() + facet_wrap(~class, nrow=2) + annotate("segment", x=2.064, xend=2.064, y=5, yend=0.1, size=1.2, colour="blue", face="bold", arrow=arrow(length=unit(0.3, "cm")))

    但令笔者苦恼的是,如果想要在不同分面上添加不同注释,不知道如何完成,因为这个原因,一开始总会放弃掉使用分面,但不使用分面很多时候各个图无法完全对齐,而且需要做多个图,有点麻烦!

    后面忘了在哪看到了一种方法,尝试可行。特记录一下,如果能帮到人也是好的,哈哈哈哈。

    annotate 对应的每一种注释类型还有另一种方法可以添加,就是使用 geom_text、geom_segment 等函数进行替代,而在后者中,就可以使用一个 data.frame 指定每一个分面上注释的位置和内容信息。这个举个例子:

    ggplot(mpg, aes(x=displ, y=cty)) + geom_point() + facet_wrap(~class, nrow=2) +  geom_segment(aes(x=a, y=b, xend=c, yend=d), size=1.2, colour="blue", arrow=arrow(length=unit(0.3, "cm")), data = data.frame(class=c("2seater", "compact", "midsize", "minivan" , "pickup", "subcompact", "suv"), a=c(2, 2, 4, 6, 5, 6, 5), b=c(14, 5, 26, 2, 14, 4,10), c=c(4, 5, 6, 2, 4, 4, 5), d=c(12, 14, 5, 6, 12, 7, 9)))

    如果是其它类型的注释,应该也是相同思路,我这就没有进一步尝试了。就是,如果觉得有用的话,登录一下账号点个赞支持一下,欢迎评论交流!

    相关文章

      网友评论

          本文标题:R语言 ggplot2 中为分面添加不同注释

          本文链接:https://www.haomeiwen.com/subject/exnbxdtx.html