R语言实现Lasagna绘制

2020-04-28 19:35:49 浏览数 (1)

对于时间序列的数据我们通常用Spaghetti Plots进行展示,但是由于大量的纵向数据的重叠性,我们引入了Lasagna Plots来展示数据的层次性。今天就为大家介绍下LasagnaPlots的实现,我们需要用到包lasagnar,接下来我们看下包的安装:

代码语言:javascript复制

library(devtools)                                                                                                                               
install_github("swihart/lasagnar")                                                                                                                   install_github("swihart/lasagnar")

此处需要注意的是R版本必须是3.6.2以上的版本才能正常安装此包。否则会出无法安装此包。当然,因为github的开源性,我们可以直接下载后在Rstudio中导入这个包也可以直接使用。当然还需要另外的一些包来辅助:

代码语言:javascript复制
library(fields)
library(lasagnar)  
library(ggplot2)
library(reshape2)
library(RColorBrewer)
library(colorspace)

接下来我们看下其中主要的功能:

1. Lasagna 主要实现图的绘制。

其中的参数我们就不做详细介绍了,毕竟都是基础的绘图参数,需要注意的就是要注意X的矩阵的格式,我们看下实例:

代码语言:javascript复制
mat <- matrix(1:100, nrow=10, ncol=10,byrow=TRUE)[sample(1:10),]
rownames(mat) <- letters[1:nrow(mat)]
 
lasagna(mat)

2. gglasagna 基于ggplot2的绘图。

其参数和lasagna基本一致。我们直接看实例:

代码语言:javascript复制

## the matrix containing data for Figure02a
H.mat <- matrix(NA, nrow=4, ncol=6)
H.mat[1, 1:6] = 100*c(2, 1, 1, 1, 1, 2)
H.mat[2, 1:6] = 100*c(2, 2, 2, 3, 2, 1)
H.mat[3, 1:6] = 100*c(2, 2, 1, 1, 1, 3)
H.mat[4, 1:6] = 100*c(3, 3, 2, 1, 2, 3)
## set rownames with ids
rownames(H.mat)<-c("P1","T1","P2","T2")
## set colnames with time / location /column index:
colnames(H.mat)<-seq(ncol(H.mat))
## name your dimensions
names(dimnames(H.mat))<-c('Subject','Time')
 
par(mai = c(.34,.39,.34,.09))
 
## base:
lasagna(H.mat)
代码语言:javascript复制
gglasagna(H.mat, legend=T,axes=T)

以上就是基础的lasagna的绘制,此包还提供了几个排序函数:

  1. wr()对行内的值进行排序:如果显示的值是离散的,那么使用wr.disc();连续使用wr.cont ()。我们直接看实例:

    lasagna(wr.disc(H.mat))

  1. er()对整个行进行排序,保留时态(列)信息。默认情况下是根据最低值出现的百分比进行排序,然后百分比最高的主题是最后一行;最低的就是最高的。实例:

    lasagna(er(H.mat))

  1. wc()在列中进行排序,打乱了行特定于列的性质,但揭示了组级的时间模式。与wr()一样,有一个离散的和连续的wc.disc()和wc.cont()实现。实例:

    lasagna(wc.disc(H.mat))

其它的颜色设置以及更加细节的操作我们就不赘述了,希望用户自由发挥,绘制自己的美图。

0 人点赞