0

我制作了一个带有红色标记的阈值的条形图。我想标记落在阈值左侧的点,但似乎根本无法让“文本”功能正常工作。

条形图屏幕截图

这是条形图代码: stripchart(ctrls$`Staining Green`, method="jitter", pch=4, xlab='Staining Green', cex.lab=2) abline(v=5,col=2,lty=3)

我首先尝试仅过滤低于阈值的那些样本: Staining.Green <- filter(QCcontrols, Staining.Green < 5) 然后添加文本 text(Staining.Green$`Staining Green` + 0.1, 1.1, labels = Staining.Green$Sample_Name, cex = 2) This does not add any text to the chart。

然后我尝试标记所有点,以防我把它弄得太复杂,并有以下变化: text(ctrls$`Staining Green` + 0.1, 1.1, labels = ctrls$Sample_Name) 再次,没有添加文本,也没有错误消息。

任何建议都非常感谢!

更新:我的 ctrls 对象比我意识到的要复杂 - 也许这让我绊倒了:

List of 17
 $ Restoration                 : num [1:504] 0.0799 0.089 0.1015 0.1096 0.1092 ...
  ..- attr(*, "threshold")= num 0
 $ Staining Green              : num [1:504] 25.1 23.5 21.1 19.7 22.3 ...
  ..- attr(*, "threshold")= num 5
 $ Staining Red                : num [1:504] 39.8 40.9 36.9 33.2 33.2 ...
  ..- attr(*, "threshold")= num 5.......```
4

1 回答 1

0

这是一个使用内置数据集的示例airquality

stripchart(airquality$Ozone,
           main="Mean ozone in parts per billion at Roosevelt Island",
           xlab="Parts Per Billion",
           ylab="Ozone",
           method="jitter",
           col="orange",
           pch=4
)

abline(v = 5, col = 2, lty = 3)

with(subset(airquality, Ozone < 5), text(Ozone, 1.1, labels = Ozone))

阴谋

带有文本标签的示例条形图

数据

的最低值为Ozone

head(sort(airquality$Ozone), 5)
[1] 1 4 6 7 7

编辑

这是一个带有类似结构的列表的快速演示:

vec1 <- c(0.0799, 0.089, 0.1015, 0.1096, 0.1092)
attr(vec1, 'threshold') <- 4

vec2 <- c(25.1, 3, 21.1, 19.7, 22.3)
attr(vec2, 'threshold') <- 5

ctrls <- list(Restoration = vec1, `Staining Green` = vec2)

stripchart(ctrls$`Staining Green`, 
           method="jitter", 
           pch=4, 
           xlab='Staining Green', 
           cex.lab=2
)

abline(v=5,col=2,lty=3)

text(ctrls$`Staining Green`[ctrls$`Staining Green` < 5], 1.1, labels = ctrls$`Staining Green`[ctrls$`Staining Green` < 5])

threshold注意:您可以替换列表属性中的 5 而不是显式包含 5 作为阈值:

attr(ctrls$`Staining Green`, "threshold")
[1] 5

阴谋

条形图

于 2020-03-23T01:03:54.340 回答