我有一个名为x的标签:
我使用脚本来制作该图:
lg <- x[1,2]
plot(1, type="n", xlab=contig, ylab="Best hits", xlim=c(-200, lg), ylim=c(0, 11))
segments(0,0,lg,0, col="red", lwd=3)
for (i in 1:10) {
segments(x[i,3],i,x[i,4],i); text(x=(x[i,4]-x[i,5]/2),y=i+0.2,labels=paste(x[i,6],"-",x[i,13], "%"))
}
但是我想在绘图中对文本(以“ NW _...”开头)进行着色,以使每个唯一文本具有自己的颜色。 由于这里有5个唯一的“ NW_”,因此将有5种颜色。
我尝试过:
lg <- x[1,2]
plot(1, type="n", xlab=contig, ylab="Best hits", xlim=c(-200, lg), ylim=c(0, 11))
segments(0,0,lg,0, col="red", lwd=3)
for (i in 1:10) {
segments(x[i,3],i,x[i,4],i); text(x=(x[i,4]-x[i,5]/2),y=i+0.2,labels=paste(x[i,6],"-",x[i,13], "%"), col=rainbow(n=nlevels(x$TID))[x$TID])
}
但这失败了。 实际上,我不知道如何循环进行。 你能帮忙吗?
谢谢!
Muriel
答案 0 :(得分:0)
将颜色列添加到x
。
x$colour <- rainbow(nlevels(x$TID))[x$TID]
然后在您的for循环中使用此颜色。
lg <- x[1,2]
plot(1, type="n", xlab=contig, ylab="Best hits", xlim=c(-200, lg), ylim=c(0, 11))
segments(0,0,lg,0, col="red", lwd=3)
for (i in 1:10) {
segments(x[i, 3], i, x[i, 4], i)
text(
x = (x[i, 4] - x[i, 5] / 2),
y = i + 0.2,
labels = paste(x[i, 6], "-", x[i, 13], "%"),
col=x[i, "colour"])
}