Цвета не отображаются в seqrplot

У меня есть вопрос относительно функции seqrplot в пакете R TraMineR, которая отображает наборы репрезентативных последовательностей. У меня есть большой набор данных о судебном разбирательстве о нарушении законодательства ЕС (из-за продолжительности судебного разбирательства я использую функцию seqgranularity) и использую следующий код.

library(TraMineR)
library(TraMineRextras)
library(grDevices)

#example data
directives <-
   structure(list(id = c(891L, 6826L, 9451L, 8816L), country_short = structure(c(2L,1L, 1L, 1L), 
.Label = c("I", "P"), class = "factor"), year = c(1992L, 1981L, 1980L, 1980L), 
federal = c(0L, 1L, 1L, 1L), admin = c(5331L, 
1423L, 735L, 656L), pol = c(NA, NA, NA, 223L), adjud = c(NA, NA, NA, 330L), 
postlit = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_), 
ADM = structure(c(2L, 1L, 4L, 3L), .Label = c("(ADM,1423)", "(ADM,5331)", "(ADM,656)", 
"(ADM,735)"), class = "factor"), POL = structure(c(NA, NA, NA, 1L), .Label = "(POL,223)", 
class = "factor"), ADJ = structure(c(NA, NA, NA, 1L), .Label = "(ADJ,330)", 
class = "factor"), PLIT = structure(c(NA_integer_, NA_integer_, NA_integer_, NA_integer_), 
.Label = character(0), class = "factor")), .Names = c("id", "country_short", "year", "federal", 
"admin", "pol", "adjud", "postlit", "ADM", "POL", "ADJ", "PLIT"), row.names = c(NA, 4L), class = "data.frame")  

directives.seq<-seqdef(data=directives, var=9:12, xtstep=364, 
                       informat = "SPS", SPS.in=list(xfix="()",sdsep=","),
                       cpal=c("blue","gray","black","green"),
                       void="%", alphabet=c("ADM","POL","ADJ","PLIT"), 
                       labels=c("Administration phase","Political phase","Adjudication phase","Post-litigation phase"))
directives.seq.month<-seqgranularity(directives.seq, tspan=30, method="first")
directives.om<-seqdist(directives.seq.month, full.matrix=FALSE, method="OM", indel=1, sm="TRATE")
seqrplot(directives.seq.month, diss=directives.om, group=directives$federal, criterion="dist", nrep=3)

Однако график, похоже, не учитывает цветовую палитру, приписываемую объекту последовательности. Вместо этого он возвращает репрезентативные последовательности черным цветом (см. снимок экрана). Я проверил свои настройки par(), и они, похоже, в порядке, поскольку все остальные графики окрашены должным образом. Или есть способ восстановить значение по умолчанию для par()? Я также пытался запустить код с меньшими подвыборками, но это не изменило результат. Кто-нибудь знает, как решить эту проблему?

Заранее большое спасибо!


person S. Lutzenberger    schedule 16.02.2018    source источник
comment
Пожалуйста, также добавьте в свой вопрос несколько примеров данных, чтобы мы могли полностью воспроизвести вашу проблему и предоставить решение, которое работает для ваших данных. stackoverflow.com/ вопросы/5963269/   -  person emilliman5    schedule 16.02.2018
comment
О да, конечно, я сделаю это. Благодарю вас!   -  person S. Lutzenberger    schedule 17.02.2018
comment
Я надеюсь, что это работает сейчас!   -  person S. Lutzenberger    schedule 17.02.2018
comment
Я предполагаю, что directives <- отсутствует перед командой structure.   -  person Gilbert    schedule 22.02.2018


Ответы (1)


Проблема, вероятно, возникает из-за того, что каждое наблюдение обведено маленькими рамками. Решение состоит в том, чтобы использовать аргумент border=NA. Я иллюстрирую, используя ваши данные. Однако с вашей групповой переменной federal одна группа имеет только одну последовательность, а seqrplot требует как минимум две последовательности на группу. Поэтому я меняю значение federal для последовательности 2.

directives$federal[2] <- 0
seqrplot(directives.seq.month, diss=directives.om, 
    group=directives$federal, criterion="dist", 
    nrep=2, border=NA)

и, как вы можете видеть ниже, цвета отображаются так, как ожидалось.

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

person Gilbert    schedule 22.02.2018
comment
Спасибо, Гилберт, что нашли время. Мне также удалось заставить его работать без аргумента border=NA. В моем длинном коде была ошибка; очевидно, нужно перезагрузить пакет grDevices после загрузки пакета TraMineRextras (который я пропустил в исходном коде). В любом случае большое спасибо! - person S. Lutzenberger; 23.02.2018
comment
Это звучит любопытно. grDevices — это базовый пакет, который обычно автоматически загружается при запуске R. У меня все отлично работает без выдачи library(grDevices), ни до, ни после загрузки TraMineRextras. - person Gilbert; 24.02.2018