TraMineR:用大约 3000 个不同状态的标签绘图
TraMineR: plotting with labels around 3000 distinct states
我正在使用 TraMineR 表示大约 40,000 个具有大约 3,000 个不同状态的序列。首先,我将聚类分析减少到 3,000 个序列(随机选择)。我已准备好绘制序列。
我无法在任何绘图的右侧添加图例。如果考虑到字母表的大小这是不可能的,至少我们可以在序列中添加前 10 个最常见的序列图,这 10 个序列的图例子集。这就是我的意思。
当我用seqfplot绘制10个最频繁的序列时,有没有办法把图例限制在这10个最频繁的序列上,以便读者识别这些序列?
谢谢。
一个解决方案是通过在 seqfplot
调用中设置 with.legend = FALSE
来抑制图例,然后使用基本的 legend
函数创建您自己的图例。
或者,您可以根据returns 最频繁序列的seqtab
函数的结果重新创建一个状态序列对象,然后绘制这个新对象。这里唯一的困难是保留原来的长标签和调色板。我使用 TraMineR
.
附带的 mvad
数据进行说明
首先我们创建带有长标签和权重的原始状态序列对象。
library(TraMineR)
data(mvad)
mvad.lab <- c("employment", "further education", "higher education",
"joblessness", "school", "training")
mvad.shortlab <- c("EM", "FE", "HE", "JL", "SC", "TR")
mvad.seq <- seqdef(mvad[, 17:86], states = mvad.shortlab,
labels = mvad.lab, weights = mvad$weight, xtstep = 6)
运行
seqfplot(mvad.seq, idxs=1:5)
你可以看到五个最常见的序列只包含 6 个状态中的 5 个(JL 没有出现在这些序列中)。
现在我们从 5 个最频繁的序列构建一个状态序列对象:
sf <- seqtab(mvad.seq, idxs = 1:5)
sff <- seqdef(sf, weights = attr(sf,"weights"))
为了匹配长标签和颜色,我们需要确定保留状态在原始字母向量中的位置:
sti <- which(alphabet(sf) %in% alphabet(sff))
这让我们可以用想要的颜色和长标签重建sff
。
sff <- seqdef(sf, weights = attr(sf,"weights"),
cpal=cpal(sf)[sti], labels=mvad.lab[sti], xtstep=6)
seqfplot(sff)
当然,显示的100%百分比并不是所有序列的百分比,而是sff
中五个序列的百分比。
获得正确百分比的解决方案是
par(mfrow=c(1,2))
seqfplot(mvad.seq, idxs = 1:5, with.legend=FALSE)
seqlegend(sff)
我正在使用 TraMineR 表示大约 40,000 个具有大约 3,000 个不同状态的序列。首先,我将聚类分析减少到 3,000 个序列(随机选择)。我已准备好绘制序列。
我无法在任何绘图的右侧添加图例。如果考虑到字母表的大小这是不可能的,至少我们可以在序列中添加前 10 个最常见的序列图,这 10 个序列的图例子集。这就是我的意思。
当我用seqfplot绘制10个最频繁的序列时,有没有办法把图例限制在这10个最频繁的序列上,以便读者识别这些序列? 谢谢。
一个解决方案是通过在 seqfplot
调用中设置 with.legend = FALSE
来抑制图例,然后使用基本的 legend
函数创建您自己的图例。
或者,您可以根据returns 最频繁序列的seqtab
函数的结果重新创建一个状态序列对象,然后绘制这个新对象。这里唯一的困难是保留原来的长标签和调色板。我使用 TraMineR
.
mvad
数据进行说明
首先我们创建带有长标签和权重的原始状态序列对象。
library(TraMineR)
data(mvad)
mvad.lab <- c("employment", "further education", "higher education",
"joblessness", "school", "training")
mvad.shortlab <- c("EM", "FE", "HE", "JL", "SC", "TR")
mvad.seq <- seqdef(mvad[, 17:86], states = mvad.shortlab,
labels = mvad.lab, weights = mvad$weight, xtstep = 6)
运行
seqfplot(mvad.seq, idxs=1:5)
你可以看到五个最常见的序列只包含 6 个状态中的 5 个(JL 没有出现在这些序列中)。
现在我们从 5 个最频繁的序列构建一个状态序列对象:
sf <- seqtab(mvad.seq, idxs = 1:5)
sff <- seqdef(sf, weights = attr(sf,"weights"))
为了匹配长标签和颜色,我们需要确定保留状态在原始字母向量中的位置:
sti <- which(alphabet(sf) %in% alphabet(sff))
这让我们可以用想要的颜色和长标签重建sff
。
sff <- seqdef(sf, weights = attr(sf,"weights"),
cpal=cpal(sf)[sti], labels=mvad.lab[sti], xtstep=6)
seqfplot(sff)
当然,显示的100%百分比并不是所有序列的百分比,而是sff
中五个序列的百分比。
获得正确百分比的解决方案是
par(mfrow=c(1,2))
seqfplot(mvad.seq, idxs = 1:5, with.legend=FALSE)
seqlegend(sff)