【问题标题】:Keeping the label order on the y-axis when using seqpcplot in TraMineR在 TraMineR 中使用 seqpcplot 时保持 y 轴上的标签顺序
【发布时间】:2015-06-17 15:45:32
【问题描述】:

我正在使用 R 包TraMineR。我想通过使用命令seqpcplot 来绘制频繁的事件序列。我之前对alphabet 中的状态进行了编码,以使它们按字母顺序排列,这样当我使用seqdef 命令而不指定labelsstates 选项来计算序列时,我会获得以下输出:

[>] state coding:
       [alphabet]  [label]  [long label] 
     1  a.sin       a.sin    a.sin
     2  b.co0       b.co0    b.co0
     3  c.co1       c.co1    c.co1
     4  d.co2+      d.co2+   d.co2+
     5  e.ma0       e.ma0    e.ma0
     6  f.ma1       f.ma1    f.ma1
     7  g.ma2+      g.ma2+   g.ma2+
     8  h.sin0      h.sin0   h.sin0
     9  i.lp1       i.lp1    i.lp1
     10  l.lp2+      l.lp2+   l.lp2+
     11  m.lp1_18    m.lp1_18 m.lp1_18
     12  n.lp2_18    n.lp2_18 n.lp2_18

然后我使用seqecreate 将状态序列对象转换为事件序列对象。当通过seqpcplot 绘制事件序列时,我得到了一个非常漂亮的图表,其中状态根据alphabet 在y 轴上按字母顺序排列。

但是,我想在图表中使用更长的标签,因此我在seqdef 命令中指定了labelsstates 选项

lab<-c("single", "cohabNOchildren","cohab1child","cohab2+children","marrNOchildren","marr1child","marr2+children","singleNOchildren","loneMother1child","loneMother2+children","loneMother1child_over18","loneMother2+children_over18")

获得:

[>] state coding:
       [alphabet]  [label]                     [long label] 
     1  a.sin       single                      single
     2  b.co0       cohabNOchildren             cohabNOchildren
     3  c.co1       cohab1child                 cohab1child
     4  d.co2+      cohab2+children             cohab2+children
     5  e.ma0       marrNOchildren              marrNOchildren
     6  f.ma1       marr1child                  marr1child
     7  g.ma2+      marr2+children              marr2+children
     8  h.sin0      singleNOchildren            singleNOchildren
     9  i.lp1       loneMother1child            loneMother1child
     10  l.lp2+      loneMother2+children        loneMother2+children
     11  m.lp1_18    loneMother1child_over18     loneMother1child_over18
     12  n.lp2_18    loneMother2+children_over18 loneMother2+children_over18

和以前一样,然后我计算了事件序列并使用 seqpcplot 绘制它们:

seqpcplot(example.seqe, 
          filter = list(type = "function",
                  value = "cumfreq",
                  level = 0.8),
   order.align = "last",
   ltype = "non-embeddable",
   cex = 1.5, lwd = .9,
   lcourse = "downwards")

这一次 y 轴上的状态是按字母顺序排列的状态,但按照 labelsstates 标签给出的顺序,而不是我希望的 alphabet

当指定labelsstates 选项并可能遵循与alphabet 不同的字母顺序时,使用seqpcplot 绘图时,有没有办法保持alphabet 中给出的字母顺序?

谢谢。

【问题讨论】:

    标签: r traminer


    【解决方案1】:

    我同意上述解决方案。作为补充,这里有一些可能的解决方案:

    seqpcplot 中使用seqecreatealphabet 参数:

    dat <- data.frame(id = factor(1, 1, 1),
                      timestamp = c(0, 20, 22),
                      event = factor(c("A", "B", "C")))
    dat.seqe <- seqecreate(dat)
    seqpcplot(dat.seqe, alphabet = c("C", "A", "B"))
    

    仅使用seqecreate

    dat <- data.frame(id = factor(1, 1, 1),
                      timestamp = c(0, 20, 22),
                      event = factor(c("A", "B", "C"),levels = c("C", "A", "B")))
    dat.seqe <- seqecreate(dat)
    seqpcplot(dat.seqe)
    

    使用seqdef(此处原始类别与y轴显示的标签不同)

    dat <- data.frame(id = factor(1),
                      ev.0 = factor("AA", levels = c("CC", "AA", "BB")),
                      ev.20 = factor("BB", levels = c("CC", "AA", "BB")),
                      ev.22 = factor("CC", levels = c("CC", "AA", "BB")))
    dat.seq <- seqdef(dat, var = 2:4, alphabet = c("CC", "AA", "BB"),
                      states = c("C", "A", "B"))
    seqpcplot(dat.seq)
    

    最后一个解决方案可能就是您正在寻找的解决方案。希望对您有所帮助。

    【讨论】:

    • 谢谢,我也试过这些选项,我得到了我的预期。
    【解决方案2】:

    seqpcplot 函数的 alphabet 参数用于控制该顺序。类似的东西

    seqpcplot(example.seqe,
       alphabet = lab, 
       filter = list(type = "function",
                      value = "cumfreq",
                      level = 0.8),
       order.align = "last",
       ltype = "non-embeddable",
       cex = 1.5, lwd = .9,
       lcourse = "downwards")
    

    应该给你预期的情节。

    【讨论】:

    • 谢谢,事实上它有效。我认为在 seqdef 命令中定义它就足够了。
    • seqdef 命令中指定的字母适用于状态序列对象。在这里,您将状态序列转换为事件序列,状态和事件字母之间不一定是一对一的匹配。
    猜你喜欢
    • 1970-01-01
    • 2015-10-10
    • 2021-10-05
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多