ggplot2回顾(14): 绘图函数--以平行坐标图为例

library(ggplot2)
library(reshape2)
library(plyr)
归一化
range01 <- function(v) {
  rng <- range(v,na.rm = T)
  (v-rng[1]) / diff(rng)
}
宽数据转为长数据
pcp_data <- function(df) {
  num <- laply(df,is.numeric)
  df[num] <- colwise(range01)(df[num])
  df$.row <- rownames(df) #df$.row是字符串类型,在绘图函数中有分组作用
  dfm <- melt(df,id=c(names(df)[!num]))
  class(dfm) <- c("pcp",class(dfm)) #这一步目的是什么?
  dfm
}
绘图函数
pcp <- function(df, ...) {
  df2 <- pcp_data(df)
  ggplot(df2,aes(variable,value))+geom_line(aes(group=.row,color=.row),size=2)
}
测试
> test <- read.table("test.txt",header = T)
> test
      RNA X2005 X2006 X2007 X2008 X2009
1   piRNA     1     3     2     2     1
2    mRNA     1     1     2     1     3
3   miRNA     4     4     5     3     1
4  lncRNA     3     5     1     2     4
5 circRNA     1     2     1     1     1
> pcp(test)

为啥要叫“平行坐标图”?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容