2019-07-30浏览量:430

图形注释,可以试试annotate函数!

数据经过可视化后,光靠一张图,很难让读者了解图形所表达的信息。所以我们需要通过添加文本,对图形进行适当地解释。除了坐标、标题和图例外,还可以直接在图形中增加注释文本来辅助解释图形的信息。在ggplot2中,就可以利用annotate和geom函数来添加文本。

 

常用格式:

annotate(geom,

              x = NULL, y = NULL,

              xmin = NULL, xmax = NULL,

              ymin = NULL, ymax = NULL,

              xend = NULL, yend = NULL,

              ……)

 

参数详解:

geom:用于注释的类型名称,从geom相关函数中获取。

X、Y、Xmin、Ymin、Xmax、Ymax、Xend、Yend:定位参数,至少指定其中一个。

……:其他参数。如colour、size等。

 

示例数据(mtcars数据集)

 

 

添加文本:

使用annotate 里面用"text"类型就能实现文本的添加,通过x和y参数对文本进行定位, label 中是需要添加的文本内容。size设置字体的大小,color设置颜色,fontface设置字体。

 

library(ggplot2)

data(mtcars)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()

p + annotate("text", x = 4, y = 25, label = "text",size=8,color="red",fontface="italic")

 

 

p + annotate("text", x = 4:5, y = 25:26,

                    label = c("text1", "text2"),

                    size=5)

 

 

除了通过坐标进行定位,还可以通过Inf控制文本的位置。

-Inf为左侧或上方,Inf为右侧或下方,hjust参数用于横向调整,vjust参数则用于纵向调整。

 

p+annotate("text", x=  -Inf, y=  Inf, label="top-left", hjust=-0.5,vjust=2,)+
   annotate("text", x= Inf, y=-Inf, label = "bottom-right" , hjust = 2, vjust = -1 )

 

 

标注样本名称:

我们可以利用样本点的坐标,标注样本名称。但是如果直接进行标注,那么文本会把点覆盖掉,此时只需要调整hjust和vjust参数,就可以对每个样本都进行注释了。

 

p + annotate("text", x = mtcars$wt, y = mtcars$mpg,

hjust=0,vjust=-0.8,

label = row.names(mtcars),

size=3)

 

 

添加数学公式:

在annotate函数中,只要增加一个parse = TRUE参数,就可以在图形中添加数学公式了。再也不需要用编辑器和PS添加公式了,是不是很方便!

 

p + annotate("text", x = c(3,4,5), y = c(26,28,30), label =c( "italic(R) ^ 2 == a[b]" ,  "sqrt(x,y)" ,  "sum(italic(f(x)),a,b)" ) ,size=5,parse = TRUE)

 

 

如果需要添加辅助线或者其他图形怎么办?没关系,annotate除了可以添加文字,还可以添加各种图形。

 

 

添加线段:

使用annotate 里面用"segment"类型,对x、y的起始位点和终止位点进行设置,就可以添加辅助线段了。linetype还可以设置线段的类型(solid、dashed、dotted、dotdash、longdash、twodash)。

 

p + annotate("segment",

                     x = 2.5, xend = 4,

                     y = 15, yend = 25,

                     colour = "blue", linetype="solid")

 

 

添加范围框:

选择"rect"类型,对位点进行设置,即可添加范围框。可通过alpha 设置范围框的透明度,通过fill参数设置颜色。利用不同的范围框还能组合出新的图形。

 

p + annotate("rect", xmin =2.25, xmax = 4.2,ymin =12.5, ymax = 25,alpha =0.2,fill="red")+
      annotate("rect", xmin = 5, xmax = 5.5,ymin = min(mtcars$mpg)-0.5, ymax = 15,alpha =0.2,fill="blue")

 

 

p + annotate("rect", xmin =1.5, xmax = 5.5,ymin =8, ymax = 9,alpha =0.8)+

annotate("rect", xmin =3, xmax = 4.1,ymin =7.5, ymax = 9.5,alpha =1)+

annotate("rect", xmin =5, xmax = 5.5,ymin =7.5, ymax = 9.5, alpha =1)

 

 

添加其他图案:

添加箭头:

p+ annotate("segment",

                    x = 5, xend = 5.3,

                    y = 16, yend = 15.1,

                    col="red",size=1,

                    arrow=arrow() )

                    #arrow设置箭头

 

 

添加双箭头:

p+ annotate("segment",

                    x = 3.15,xend = 4.1,

                    y = 10, yend = 10,

                    col="black",size=1,

arrow=arrow((ends="both"),angle=40,length=unit(0.5,"cm")) )

                    #arrow设置箭头

                    #angle设置箭头角度

                    #length设置箭头长度

 

 

添加点、误差棒、箱线图等:

p+ annotate("boxplot",x=5,middle=19,lower=18.5,upper=21,ymin=18,ymax=23,alpha=0.5)+

annotate("pointrange", x = 3.5, y = 20, ymin = 12, ymax = 28, colour = "blue", size = 1.5)+

annotate("point", x = 2, y = 20,  colour = "black", fill="red",size = 15,alpha=0.3,pch=21)

 

 

#middle中位数

#lower下边缘

#upper上边缘

#ymin下四分位数、最小值

#ymax上四分位数、最大值

#fill填充颜色

 

今日份的精彩内容落下帷幕,

期待下一期更精彩,

我们不见不散~

 


下一篇