Как совместить государственный распределительный сюжет и отдельную легенду в traminer? - PullRequest
0 голосов
/ 05 июля 2018

Построение нескольких кластеров с использованием seqdplot в TraMineR может испортить легенду, особенно в сочетании с многочисленными состояниями. Это требует дополнительных опций для изменения легенды, которые доступны с функцией seqlegend. Однако мне трудно объединить график распределения состояний (seqdplot) с отдельной измененной легендой (seqlegend). В идеале каждый хочет построить кластеры (например, 9) без легенды, а затем добавить отдельную легенду в доступную нижнюю правую строку, но вместо этого отдельная легенда генерирует новое окно графика. Кто-нибудь может помочь?

Вот пример использования данных биофамы. С данными, которые я использую в своем собственном исследовании, легенда становится намного более грязной, так как у меня 11 штатов.

#Data
library(TraMineR)
library(WeightedCluster)
data(biofam)
biofam.seq <- seqdef(biofam[501:600, 10:25])

#OM distances
biofam.om <- seqdist(biofam.seq, method = "OM", indel = 3, sm = "TRATE")

#9 clusters
wardCluster <- hclust(as.dist(biofam.om), method = "ward.D2")
cluster9 <- cutree(wardCluster, k = 9)

#State distribution plot
seqdplot(biofam.seq, group = cluster9, with.legend = F)

#Separate legend
seqlegend(biofam.seq, title = "States", ncol = 2)

#Combine state distribution plot and separate legend  
#??

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Функция seqplot не позволяет контролировать количество столбцов легенды и не позволяет добавлять заголовок легенды. Таким образом, вы должны составить график самостоятельно, создав отдельный график для каждой группы с отключенной легендой и добавив легенду впоследствии. Вот как вы можете это сделать:

cluster9 <- factor(cluster9)
levc <- levels(cluster9)
lev <- length(levc)

par(mfrow=c(5,2))
for (i in 1:lev)
   seqdplot(biofam.seq[cluster9 == levc[i],], border=NA, main=levc[i], with.legend=FALSE)
seqlegend(biofam.seq, ncol=4, cex = 1.2, title='States')

enter image description here

======================== Обновление, 1 октября 2018 г. =================

Начиная с TraMineR V 2.0-9, семейство функций seqplot теперь поддерживает (когда это применимо) аргумент ncol для управления количеством столбцов в легенде. Чтобы добавить заголовок к легенде, вам все равно нужно действовать, как показано выше.

0 голосов
/ 05 июля 2018

AFAIK seqlegend() не работает, когда на других графиках, которые вы строите, используются аргументы groups. В вашем случае единственное, что добавляет seqlegend(), это заголовок «Состояния». Если вы хотите добавить легенду, чтобы настроить легенду и т. Д., Это можно сделать, предоставив соответствующие alphabet и states, которые используются в вашем анализе.

На веб-сайте пакета есть несколько пошаговых инструкций и руководств, перечисляющих различные варианты и т. Д .: Ссылка на их веб-сайт

#Data
library(TraMineR)
library(WeightedCluster)
data(biofam)

## Generate alphabet and states
alphabet <- 0:7
states <- letters[seq_along(alphabet)]

biofam.seq <- seqdef(biofam[501:600, 10:25], states = states, alphabet = alphabet)

#OM distances
biofam.om <- seqdist(biofam.seq, method = "OM", indel = 3, sm = "TRATE")

#9 clusters
wardCluster <- hclust(as.dist(biofam.om), method = "ward.D2")
cluster9 <- cutree(wardCluster, k = 9)

#State distribution plot
seqdplot(biofam.seq, group = cluster9, with.legend = TRUE)
...