向散点图中的异常值添加标签

时间:2020-09-09 15:48:38

标签: r plot

我目前有一个像这样的矩阵(表),其中包含6位女性的身高和体重:

V1     V2       V3     V4
1      Bella    161    60
2      Jessica  160    55
3      Indigo   179    72
4      Tina     165    54
5      Sofia    178    70
6      Fiona    163    51

在散点图上(身高与体重),我想用女性的名字标注离群值。有办法吗?我尝试过

text(V4, V3, labels=V2)

但它似乎不起作用。

2 个答案:

答案 0 :(得分:0)

text函数不知道从何处获取V4等。

一些选择,坚持使用基本图形:

  1. text(dat$V4, dat$V3, labels = $V2)
  2. with(dat, text(V4, V3, labels = V2))
  3. text(V3 ~ V4, data = dat, labels = V2)

演示:

plot(mpg ~ disp, data = mtcars, pch = 16, col = "gray90")
text(mpg ~ disp, data = mtcars[2:4,], labels = cyl)

enter image description here

答案 1 :(得分:0)

您也可以尝试使用ggplot2方法。在这里,我包括使用您的数据的代码,但是您必须定义什么是异常值。这里是方法:

library(ggplot2)
#Data
df <- data.frame(V1=1:6,
                 V2=c('Bella','Jessica','Indigo','Tina','Sofia','Fiona'),
                 V3=c(161,160,179,165,178,163),
                 V4=c(60,55,72,54,70,51),stringsAsFactors = F)

我们必须定义离群值。假设V3中大于175的值和V4中大于69的值是离群值:

#Create label
df$label <- ifelse(df$V3>175 & df$V4>69,df$V2,NA)

现在我们绘图:

#Plot
ggplot(df,aes(x=V3,y=V4))+
  geom_point()+
  geom_text(aes(label=label),vjust=-0.5)

输出:

enter image description here

还请注意贤哲@ r2evans的出色建议。他们很清楚!