自从去年刚学R的时候碰了下调和曲线图之后就再也没碰过了,碰巧今天正好有人问起,索性干脆就几种常见的实现方法简单写一写,不算上自己动手写函数的话大致有那么三种,当然肯定也还有很多更好的办法。
1 MSG包中的andrews_curve()
这是我觉得最不错的方法,函数代码很科学,在我的另一篇文章上也以它作为示例,并且在参数设置上与一般的plot等保持了一致,感觉在作图效果的设置上也很灵活,这是因为函数本身依赖于matplot,参数中除去x和n外其余均可完全参照matplot,x则指的是需提供作图的数据,数据框和矩阵均可,n用于控制取点个数,即曲线的平滑度,n越大平滑程度越高,缺省值是101。
andrews_curve(iris[, -5])
曲线的颜色可以col参数控制,缺省时采用默认的调色板,也可以自己设置一个向量,如果曲线数超过调色板长度或向量的长度则会重复使用,上述代码未经任何设置即采用了 默认的调色板,但事实上效果并不理想,曲线一多就会显得很乱,但仔细观察可以看到曲线大致可以分成那么几类,于是可以“按类”指定颜色
andrews_curve(iris[, -5], col = as.integer(iris[, 5]))
这里借助了数据中的分类变量,将其转化为整数后即可调用调色板中的颜色。
2 andrews包中的andrews()
andrews包是专门为调和曲线服务的,但除了提供了更多的f(t)形式外,实在找不出更多的优点,函数本身也并不灵活。用法如下
andrews(df, type=1, clr=NULL, ste