R图中的颜色

时间:2018-09-25 07:56:39

标签: r colors

我有一个名为x的标签:

enter image description here

我使用脚本来制作该图:

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], "%"))
}

enter image description here

但是我想在绘图中对文本(以“ 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

1 个答案:

答案 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"])
}