TraMineR函数seqfplot()y轴:显示每个序列百分比值

k10s72fa  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(192)

我曾经使用TraMineR函数seqfplot()和参数yaxis =“pct”,它很好地将每个序列的百分比值放在y轴上。在这个过程中的某个地方,软件包的一些更新不知何故丢失了这个功能(我现在使用的是2.2-7版本),并且抛出了一个错误。

library(TraMineR) # version 2.2-7

数据来源于?seqplot:

data(actcal)
set.seed(1)
actcal <- actcal[sample(nrow(actcal),300),]
actcal.lab <- c("> 37 hours", "19-36 hours", "1-18 hours", "no work")
actcal.seq <- seqdef(actcal,13:24,labels=actcal.lab)

一个简单的图,但不带我想要的y轴注解(应显示每个序列的百分比值):

seqfplot(actcal.seq)

这在早期版本的TraMineR中是有效的,现在它会抛出一个错误:如果不符合逻辑,yaxis应该是“all”或“left”之一

seqfplot(actcal.seq, yaxis = "pct")

使用时?plot.stslist.freq直接,它做了seqfplot曾经做过的事情:

x <- seqtab(actcal.seq)
plot(x, yaxis = "pct")

但是它没有seqfplot的所有复杂功能(比如允许分组和自动显示州颜色图例)。问题似乎是参数yaxis同时在seqfplot()和plot.stslist.freq()中使用,但使用方式不同,因此不能通过。
我能以某种方式让seqfplot(actcal.seq,yaxis =“pct”)像以前一样工作吗?

bfrts1fy

bfrts1fy1#

听起来像是最近TraMineR更新后的一个bug。我相信优秀的TraMineR团队一旦意识到这个问题(无论是由于您的问题还是直接消息),就会解决这个问题。
与此同时,我想向你指出一个用于绘制序列数据的替代包,我写这个包是因为我通常使用ggplot 2而不是base R plot。也许,这对你来说也是一个有趣的选择。

library(TraMineR)
library(ggseqplot)
library(TraMineR)
library(ggplot2)

# actcal data set
data(actcal)

# We use only a sample of 300 cases
set.seed(1)
actcal <- actcal[sample(nrow(actcal), 300), ]
actcal.lab <- c("> 37 hours", "19-36 hours", "1-18 hours", "no work")
actcal.seq <- seqdef(actcal, 13:24, labels = actcal.lab)

# sequence frequency plot with ggseqplot
ggseqfplot(actcal.seq,
           ylabs = "share") # note: overlapping labels are removed automatically

# apply grouping and some other sophistaced stuff
ggseqfplot(actcal.seq,
           group = actcal$sex,
           ranks = 1:5,
           ylabs = "share") +
  scale_x_discrete(breaks = 1:12,
                   labels = month.abb,
                   guide = guide_axis(n.dodge=2),
                   expand = expansion(add = c(0.2, 0)))
#> Scale for x is already present.
#> Adding another scale for x, which will replace the existing scale.

创建于2023-05-04使用reprex v2.0.2

相关问题