向 parcoord 添加刻度(平行坐标图)

2024-02-24

这 MASS 包中的 parcoord 函数看起来不错,但是我如何添加刻度 四个y轴?

代码在这里:

 ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])
 parcoord(log(ir)[, c(3, 4, 2, 1)], col = 1 + (0:149)%/%50)

你尝试过设置吗var.label=T in the parcoord功能?这还不够吗?

否则我没有看到任何简单的方法来使用默认功能更改轴。但事实证明该函数非常短,我们可以轻松地从它那里窃取想法并制作我们自己的版本。这是修改它的一种方法

parcoordlabel<-function (x, col = 1, lty = 1,  lblcol="blue",...) 
{
    df <- as.data.frame(x)
    pr <- lapply(df, pretty)
    rx <- lapply(pr, range, na.rm = TRUE)
    x <- mapply(function(x,r) {
            (x-r[1])/(r[2]-r[1])
        },
        df, rx)
    matplot(1L:ncol(x), t(x), type = "l", col = col, lty = lty, 
        xlab = "", ylab = "", axes = FALSE, ...)
    axis(1, at = 1L:ncol(x), labels = colnames(x))
    for (i in 1L:ncol(x)) {
        lines(c(i, i), c(0, 1), col = "grey70")
        text(c(i, i), seq(0,1,length.out=length(pr[[i]])), labels = pr[[i]], 
            xpd = NA, col=lblcol)
    }
    invisible()
}

你可以运行它

ir <- log(rbind(iris3[,,1], iris3[,,2], iris3[,,3]))[,c(3,4,2,1)]
parcoordlabel(ir, col = 1 + (0:149)%/%50)

现在我承认它有点丑陋。但希望您能够充分理解这些作品,以定制您喜欢的方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 parcoord 添加刻度(平行坐标图) 的相关文章

随机推荐