【问题标题】:Control color in r plot控制 r 图中的颜色
【发布时间】:2016-06-08 19:24:09
【问题描述】:

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'))

【问题讨论】:

  • 你能澄清一下“但没有在第一行插入选定的行”吗?
  • 第二个图与第一个图重叠,虽然它绘制了我选择的行,但显然没有将它们按所需的顺序放在第一个图上,它只是绘制了我在第一个图上指定的行阴谋。我想要的是在第一个图上用不同的颜色为不同的行着色

标签: r plot vegan


【解决方案1】:

输入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'))

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

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 2016-10-21
    • 1970-01-01
    • 2020-01-25
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多