给ggplot图随心所欲地加注释

如何在图中添加文字注解、线段、箭头及方程式

本文介绍一下如何在图中添加文字注释,线段,矩形及方程式。

1 示例数据

使用R自带的mtcars数据集作为示例数据。

library(ggplot2)#R包加载
head(mtcars)#查看mtcars数据集前6行
#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

 

 

2 绘制散点图

p<-ggplot(mtcars,aes(x=disp,y=wt))+
    geom_point()+
    theme_classic() # 使用极简经典主题
p

 

3 添加文本注释

p+annotate("text", 
           x=250,y=5,   #文字注释的的坐标是(22,240)
           label="add text",   #标签内容
           color='red')   # 文本的颜色

4 数学表达式

使用annotate(geom='text),并设置parse=TRUE。注意:parse = TRUE 很重要,这决定了数学表达式是否按正常的形式显示。虽然geom_text也可以编辑公式,但是能用就行了,学那么多代码谁记得住。

# 在指定位置添加带有数学表达式的文本
p + annotate("text", 
             x = 250, y = 5, 
             label = "italic(R) ^ 2 == 0.75", 
             size = 7,
             color = 'red',
             parse = TRUE)

 

其他的用法:

功能 语法 示例 显示效果
斜体 italic(text) italic("Text") Text
加粗 bold(text) bold("Text") Text
上标 ^ x^2
下标 [] x[1] x₁
上下标结合 x[1]^2 x[1]^2 x₁²
分数 frac(numerator, denominator) frac(1, 2) ½
根号 sqrt(expression) sqrt(x) √x
求和 sum(expression, lower, upper) sum(x[i], i==1, n) ∑(xᵢ) from i=1 to n
积分 integral(expression, lower, upper) integral(f(x)*dx, a, b) ∫f(x)dx from a to b
希腊字母 直接使用名称(如 alphabeta alpha + beta α + β
数学符号 *%*%%+-% a %*% b a × b
括号 ( ) 或 { } (x + y) (x + y)
空格 ~ x~y x y
特殊字符 用反引号 ` 包裹 `x y` x y

 

5 添加矩形

使用 annotate("rect")  。

p + annotate("rect", 
             xmin=100, xmax=200,  # x轴范围[100,200]
             ymin=2, ymax=4,    # y轴范围[2,4]
             alpha=0.2,             # 透明度
             fill='red')            # 颜色

 

 

 

6 添加线段

p + annotate("segment", 
             x=100, xend=350,       # x轴范围[100,350]
             y=4.5, yend=4.5,     # y轴范围[4.5,4.5]
             colour="red",        # 线条颜色
             lwd=1)   

 

 

 

7 完整代码

library(ggplot2)#R包加载
head(mtcars)#查看mtcars数据集前6行
#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

p<-ggplot(mtcars,aes(x=disp,y=wt))+
    geom_point()+
    theme_classic() # 使用极简经典主题
p

p = p+annotate("text", 
           x=400,y=2,   #文字注释的的坐标是(22,240)
           label="add text",   #标签内容
           color='red')   # 文本的颜色
p

p = p + annotate("text", 
             x = 250, y = 5, 
             label = "italic(R) ^ 2 == 0.75", 
             size = 7,
             color = 'red',
             parse = TRUE)
p

p = p + annotate("rect", 
             xmin=100, xmax=200,  # x轴范围[12.5,22.5]
             ymin=2, ymax=4,    # y轴范围[200,400]
             alpha=0.2,             # 透明度
             fill='red')            # 颜色
p

p = p + annotate("segment", 
             x=100, xend=350,       # x轴范围[14,18]
             y=4.5, yend=4.5,     # y轴范围[260,260]
             colour="red",        # 线条颜色
             lwd=1)   
p

 

本文最后更新于2025-01-15如有失效,请留言
THE END