在TraMineR中使用seqdplot绘制多个群集可能会使图例混乱,尤其是在与多种状态结合使用时。这需要用于修改图例的其他选项,而图例可与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
#??
谢谢。
答案 0 :(得分:0)
seqlegend()
参数时, AFAIK groups
不起作用。在您的情况下,seqlegend()
唯一要添加的是标题“州”。如果您要添加图例,以便自定义图例中的内容,等等,可以通过提供分析中使用的相应alphabet
和states
来实现。
该程序包的网站上有多个演练和列举各种选项等的指南:Link to their webiste
#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)
答案 1 :(得分:0)
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')
======================== 更新,2018年10月1日=================
自TraMineR V 2.0-9起,seqplot
函数家族现在支持(如果适用)参数ncol
,以控制图例中的列数。要为图例添加标题,您仍然必须按照上述步骤进行操作。