vlambda博客
学习文章列表

R语言实现Lasagna绘制

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

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

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

library(fields)library(lasagnar) library(ggplot2)library(reshape2)library(RColorBrewer)library(colorspace)

 

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

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

R语言实现Lasagna绘制

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

 

mat <- matrix(1:100, nrow=10, ncol=10,byrow=TRUE)[sample(1:10),]rownames(mat) <- letters[1:nrow(mat)] lasagna(mat)

R语言实现Lasagna绘制

2. gglasagna 基于ggplot2的绘图。

R语言实现Lasagna绘制


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

## the matrix containing data for Figure02aH.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 idsrownames(H.mat)<-c("P1","T1","P2","T2")## set colnames with time / location /column index:colnames(H.mat)<-seq(ncol(H.mat))## name your dimensionsnames(dimnames(H.mat))<-c('Subject','Time') par(mai = c(.34,.39,.34,.09)) ## base:lasagna(H.mat)

 

R语言实现Lasagna绘制


 

gglasagna(H.mat, legend=T,axes=T)


R语言实现Lasagna绘制

 


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

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

    lasagna(wr.disc(H.mat))


    R语言实现Lasagna绘制

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

    lasagna(er(H.mat))


    R语言实现Lasagna绘制

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


    lasagna(wc.disc(H.mat))

R语言实现Lasagna绘制

 

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


欢迎大家互相学习交流!