控制r图中的颜色

时间:2016-06-08 19:24:09

标签: r plot vegan

可以轻松绘制nestednodf的输出,它是包纯素的函数。我想以不同颜色突出显示所选行,但我不知道如何在单个图中指定它。假设我想要蓝色的行1,3和5以及红色的行2和4(默认颜色)。此代码允许第二个绘图与蓝色行1,3,5重叠,但不会在第一个插入所选行:

library(vegan)
df=data.frame(a=c(0,1,1,1,0), b=c(1,0,0,0,1), c=c(1,1,1,1,0), d=c(1,0,1,0,1), e=c(0,0,0,1,1))
plot(nestednodf(df))
plot(nestednodf(df[c(1,3,5),]), col='blue', add=T)

有没有办法控制行颜色?像这样:

plot(nestednodf(df), row.col=c('blue', '', 'blue', '', 'blue'))

1 个答案:

答案 0 :(得分:3)

您可以输入vegan:::plot.nestednodf来查看该功能的来源。没有机会两个调整行颜色。但是你可以看到函数非常简单,所以你可以编写自己的版本

myplot <- function (x, col = "red", names = FALSE, ...) 
{
    z <- x$comm
    z <- t(z[nrow(z):1, ])

    if (length(col) == 1) 
        col <- c(NA, col)
    else if ( length(col)>1) {
        z <- z*((col(z)-1)%%2+1)
    }
    image(z, axes = FALSE, col = col, ...)
    box()
    if (length(names) == 1) 
        names <- rep(names, 2)
    if (names[1]) {
        axis(2, at = seq(1, 0, len = ncol(z)), labels = rev(colnames(z)), 
            las = 2, ...)
    }
    if (names[2]) {
        axis(3, at = seq(0, 1, len = nrow(z)), labels = rownames(z), 
            las = 2, ...)
    }
}

这里我只添加了一行来更改指定值之间交替的颜色。比较

plot(nestednodf(df))
myplot(nestednodf(df), col=c(NA,'red','blue'))

enter image description here

请注意,我传递了三种颜色,因为第一种颜色用于&#34; 0&#34;矩阵中的值