散点图添加文字标记作用
散点图通常用于两个或两个以上数值变量之间关系可视化。将x变量与y变量各值在直角座标系上以点的形式展示两个变量之间大致关系。
这里通过一张图来展示散点图添加文字标记的作用。
#删除mtcars15和17行生成模拟数据
data <- mtcars[-c(15,17),]
head(data)
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
#载入包
library(ggplot2)
#生成散点图
ggplot(data) +
geom_point(aes(wt, mpg), color = 'red') +
theme_classic(base_size = 16)
可以看到右下角这个值离其他点比较远,这时候如果我们知道这个点是哪一行的话,可以通过删除这个离群点,来减少其对线性回归拟合结果的影响。
这里仅仅做一个作用说明,如果有适用数据。有兴趣的读者可以尝试删除散点图中的偏离点做线性回归与未删除偏离点数据做一个比较。
geom_text()
ggplot2中geom_text()
函数可以给散点图添加文字标记,点名称通过label参数赋值
ggplot(data) +
geom_point(aes(wt, mpg), color = 'red') +
geom_text(aes(wt, mpg, label = rownames(data))) +
theme_classic(base_size = 16)
这时候可以清楚的知道这个离群点的行名为Lincoln Contir,这是可以尝试排除这一行来做线性回归拟合。
优化散点图文字标记
前面图形中虽然清楚的显示离群点的行名,但可以看见图中由许多文字重叠在一起,并不美观。
这里使用ggrepel
包中的geom_text_repel
函数,只需要将geom_text
换成geom_text_repel
即可。
#install.packages("ggrepel")
library(ggrepel)
ggplot(data) +
geom_point(aes(wt, mpg), color = 'red') +
geom_text_repel(aes(wt, mpg, label = rownames(data))) +
theme_classic(base_size = 16)
可以看见散点图中文字标记显示非常清楚,重叠情况被大幅度减轻。