将数据标签添加到带状图
add data labels to stripchart
我制作了一个带有红色标记阈值的带状图。我想标记落在阈值左侧的点,但似乎根本无法使 'text' 函数正常工作。
stripchart screenshot
这是条形图代码:
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)
这没有向图表添加任何文本。
然后我试着标记所有的点,以防我把它弄得太复杂,有以下变化:
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.......```
这是一个使用 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 作为阈值:
attr(ctrls$`Staining Green`, "threshold")
[1] 5
情节
我制作了一个带有红色标记阈值的带状图。我想标记落在阈值左侧的点,但似乎根本无法使 'text' 函数正常工作。
stripchart screenshot
这是条形图代码:
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)
这没有向图表添加任何文本。
然后我试着标记所有的点,以防我把它弄得太复杂,有以下变化:
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.......```
这是一个使用 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 作为阈值:
attr(ctrls$`Staining Green`, "threshold")
[1] 5
情节