调和曲线图和轮廓图的比较
很好,文章写得非常规范!建议本文永久链接修改为:parallel-coordinates-and-andrews-curve
再加把劲,把多元数据降维方法都写了吧 :)
正好我前一段时间也写过一个调和曲线图的R函数,发出来分享一下:
对于调和曲线图,观测[latex]X_i[/latex]和[latex]X_j[/latex]的欧式距离正好是曲线垂直距离的积分,这是数学性质和图形性质能够结合的关键。
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()也能得到一样的效果么?
可是画出来的不是很一样:
《统计建模与R软件》版的调和曲线的颜色比较友好,相近族类的颜色一样、不同类的颜色不同。
andrews.curve()绘制的曲线颜色是是交替的(一次red,一次green3, 一次blue,依次循环使用),而不是颜色按类聚集,这样画出来的色彩整体很凌乱(颜色重叠后就更变味了)。
传入什么控制参数andrews.curve()也能得到一样的效果么?
1 年 后
写得不错,找了很多地方,终于看到想要的东西了。谢谢分享!
1 个月 后
R到底要怎么才能做雷达图啊= =...