rlayoutsequencepartraminer

TraMineR graphics not reactive to layout of R


##PACKAGES
library(tidyverse,quietly=TRUE)
library(TraMineR)
library(WeightedCluster, quietly = TRUE)
library(viridis)
library(seqhandbook, quietly = TRUE)

Here is a representation of my dataset:

mydata<-structure(list(T1 = structure(c("ANN", "ANN", "ANN", "ANN", "ANN", 
                                "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                                "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                                "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                                "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                                "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN"
), label = "Type chir. bariat."),
T2 = structure(c("ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN"), label = "Type chir. bariat."),
T3 = structure(c("ANN",          "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN"), label = "Type chir. bariat."),
T4 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN"), label = "Type chir. bariat."),
T5 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN"), label = "Type chir. bariat."),
T6 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN"), label = "Type chir. bariat."),
T7 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ABL"), label = "Type chir. bariat."),
T8 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ABL"), label = "Type chir. bariat."), 
T9 = structure(c("ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                 "ANN", "ANN", "ANN", "ABL"), label = "Type chir. bariat."),
T10 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ABL"), label = "Type chir. bariat."),
T11 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ABL", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."), 
T12 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ABL", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."),
T13 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."), 
T14 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."), 
T15 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."), 
T16 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."),
T17 = structure(c("ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."),
T18 = structure(c("ANN", 
                  "ABL", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."),
T19 = structure(c("ANN", 
                  "ABL", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat."),
T20 = structure(c("ANN", 
                  "ABL", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", "ABL", "ANN", 
                  "ANN", "ANN", "ANN", "SLE", "SLE", "ANN", "ANN", "ANN", "BPG", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "SLE", "ANN", "ANN", "ANN", "ANN", "ANN", "ANN", 
                  "ANN", "ANN", "ANN", "SLE"), label = "Type chir. bariat.")), 
row.names = c(NA,-50L), class = c("tbl_df", "tbl", "data.frame"))

I want to plot a graphic and the legends next to each other, since apparently, the function seqheatmap from seqhandbook does not display the legends.

I have done the two separately and want to do this with the function layout from R base

My code for the creation of sequences

# ALPHABETS AND LABELS
labels <- sort(c("ANN","SLE","BPG","BPD","ABL","DCD"))
Etats_lng<-c("Ablation","Anneau","Derivation bilio-pancréatique","By-pass gastrique",
             "Décès","Sleeve")

seq <- seqdef(
  mydata[, paste("T",1:20,sep = "")],
  alphabet = labels,
  states = Etats_lng,
  cpal = viridis(6, direction = -1)
)

# distances
couts <- seqsubm(seq, method = "CONSTANT", cval = 2)# Matrice des couts de substitution         
seq.dist<- seqdist(seq, method = "OM", indel = 1, sm = couts)# Distance avec optimal-Matching
seq.hclust <- hclust(as.dist(seq.dist), method = "ward.D2") #Clustering des trajectoire


#SETTING OF LAYOUT
layout.matrix <- matrix(c(1,2), nrow = 1, ncol = 2)
layout(mat = layout.matrix,
       widths = c(3,1) )# Widths of the two columns
layout.show(2)

In the first frame, I want to put the heatmap and in the second one the legends

enter image description here

But I doest works

seq_heatmap(seq, seq.hclust)
seqlegend(seq)

Solution

  • Function layout does not work in your example because layout cannot be nested and heatmap (invoked by seq_heatmap) already uses layout to generate the Heat Map.

    The only solution I see is to retrieve the source code of function heatmap (from stats), rename it say myheatmap, and modify it to add the display of the color legend.

    To retrieve the code of heatmap

    myheatmap <- heatmap
    edit(myheatmap)
    

    For edit to work, you may have to specify the editor. Alternatively, you can use View and copy paste the content in the editor of your choice.