Графика TraMineR не реагирует на компоновку R

#r #layout #sequence #par #traminer

Вопрос:

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

Вот представление моего набора данных:

 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"))
 

Я хочу построить график и легенды рядом друг с другом, так как, по-видимому, функция seqheatmap from seqhandbook не отображает легенды.

Я сделал это отдельно и хочу сделать это с помощью функции layout from R base

Мой код для создания последовательностей

 # 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)
 

В первом кадре я хочу поместить тепловую карту, а во втором — легенды

введите описание изображения здесь

Но я действительно работаю

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

Ответ №1:

Функция layout не работает в вашем примере, потому layout что не может быть вложена и heatmap (вызывается seq_heatmap ) уже используется layout для создания тепловой карты.

Единственное решение, которое я вижу, — это получить исходный код функции heatmap (из статистики), переименовать его, скажем myheatmap , и изменить его, чтобы добавить отображение цветовой легенды.

Чтобы получить код heatmap

 myheatmap <- heatmap
edit(myheatmap)
 

Для edit работы вам, возможно, придется указать редактор. Кроме того, вы можете использовать View и копировать вставленный контент в выбранном вами редакторе.

Комментарии:

1. Спасибо за ваш ответ @Gilbert. Но я понятия не имею, как получить источник кода из статистики.

2. Теперь я объясню, как получить код в ответе