很好,文章写得非常规范!建议本文永久链接修改为:parallel-coordinates-and-andrews-curve
再加把劲,把多元数据降维方法都写了吧 :)
正好我前一段时间也写过一个调和曲线图的R函数,发出来分享一下:
andrews.curve = function(x, n = 101, type = "l", lty = 1, 
    lwd = 1, pch = NA, xlab = "t", ylab = "f(t)", ...) {
    p = ncol(x)
    if (is.null(p)) 
        stop("'x' must be a matrix or data.frame!")
    if (p < 1) 
        stop("'x' must have at least one column!")
    theta = matrix(seq(-pi, pi, length.out = n), nrow = n, ncol = 1)
    if (p == 1) {
        a = matrix(x/sqrt(2), nrow = n, ncol = nrow(x), byrow = TRUE)
    }
    if (p > 1) {
        b = matrix(rep(1:(p/2), each = 2, length.out = p - 1), 
            nrow = 1, ncol = p - 1)
        a = cbind(1/sqrt(2), sin(theta %*% b + matrix(rep(c(0, 
            pi/2), length.out = p - 1), nrow = n, ncol = p - 
            1, byrow = TRUE))) %*% t(x)
    }
    matplot(theta, a, type = type, lty = lty, lwd = lwd, pch = pch, 
        xlab = xlab, ylab = ylab, ...)
} 
里面都是以矩阵的形式做的运算,不过我没有测试,不知道速度会不会快一些。

对于调和曲线图,观测[latex]X_i[/latex]和[latex]X_j[/latex]的欧式距离正好是曲线垂直距离的积分,这是数学性质和图形性质能够结合的关键。
[未知用户] 快很多呢,没有一个显式循环,十分方便:)

调和曲线图的确很好地将数学融进了图形,可谓鬼斧神工啊。
[未知用户] 还在学习之中,益辉的《现代统计图形》里面讲了好多呢。
4 天 后
14 天 后
最近正好在看调和曲线这块儿,写的真不错!
刚发现数学公式中的斜杠又被吃了……ft,麻烦太云更新一下吧(参见我今天下午的邮件)。
[未知用户] 已更新:)前一段时间我就发现了一次,当时还不知道是什么原因,改回去了。这次怎么又来了,不知这个bug怎么修补。
[未知用户] 我Google了一下,发现这个bug已经存在几年了,有人写了解决办法,不过涉及到修改Wordpress的核心程序,所以我就没修正,请大家忍一忍,若写公式的话,记得保存一下HTML代码吧。
1 年 后
真的很不错,我在《统计建模与R软件》中看到过,但是当时没有注意,看来以后看书要注意了!
2 年 后
[未知用户] andrews.curve(x, col=c('red', 'green3', 'blue'))
可是画出来的不是很一样:
《统计建模与R软件》版的调和曲线的颜色比较友好,相近族类的颜色一样、不同类的颜色不同。

andrews.curve()绘制的曲线颜色是是交替的(一次red,一次green3, 一次blue,依次循环使用),而不是颜色按类聚集,这样画出来的色彩整体很凌乱(颜色重叠后就更变味了)。

传入什么控制参数andrews.curve()也能得到一样的效果么?
1 年 后
写得不错,找了很多地方,终于看到想要的东西了。谢谢分享!
1 个月 后