颜色和绘图术语文档矩阵

AI5*_*963 2 r

按照下面绘制术语 - 文档矩阵的示例,

library("tm")

  data("crude")

  tdm <- TermDocumentMatrix(crude, control = list(removePunctuation = TRUE,
                                                  removeNumbers = TRUE,
                                                  stopwords = TRUE))

  plot(tdm, terms = findFreqTerms(tdm, lowfreq = 6)[1:25], corThreshold = 0.5)
Run Code Online (Sandbox Code Playgroud)

有没有办法根据节点的顶点颜色对节点进行着色?有没有一个例子可以让更多顶点的节点更大或者那个效果更好?

MrF*_*ick 5

我看来最终被绘制的节点属于该类AgNode.您可以设置的属性AgNode列在?AgNode帮助页面上.一旦知道了要设置的属性,就可以将列表传递nodeAttrs给绘图命令的参数.(编辑:实际上更好的列表可能是Rgraphviz文档中的节点属性描述)

nodeAttrs参数采用一个列表,其中该列表的每个命名元素对应于其中一个属性AgNode.在每个位置,存储一个命名向量,其中向量的名称对应于节点名称(即术语矩阵中的单词),值表示该属性的值.例如

list(
    color=c(futures="blue", demand="red"),
    shape=c(crude="ellipse", budget="circle"),
)
Run Code Online (Sandbox Code Playgroud)

因此,当您想要根据它们具有的顶点数量对项进行着色时,我将假设您的意思是边,因为每个单词都是图中的单个顶点.所以,使用你的tdm对象

freqterms <- findFreqTerms(tdm, lowfreq = 6)[1:25]
vtxcnt <- rowSums(cor(as.matrix(t(tdm[freqterms,])))>.5)-1
Run Code Online (Sandbox Code Playgroud)

我救你想要的条款,然后我基本上复制绘图命令里面的代码来计算的相关性与0.5截止看到这个子集每个词多少换句话说连接.这是vtxcnt变量.(可能有一种更有效的方法来提取它,但我找不到它).现在我准备好分配颜色了

mycols<-c("#f7fbff","#deebf7","#c6dbef",
    "#9ecae1","#6baed6","#4292c6",
    "#2171b5", "#084594")
vc <- mycols[vtxcnt+1]
names(vc) <- names(vtxcnt)
Run Code Online (Sandbox Code Playgroud)

在这里,我从ColorBrewer中抓取了一些颜色.我有8个值,因为vtxcnt范围从0 到8的值.如果您有更广泛的范围或想要折叠类别,您可以使用该cut()命令对它们进行分类.然后我创建了一个命名向量vc,将每个单词匹配到适当的颜色.vc应该是这样的

 head(vc)
 #  ability    accord agreement       ali      also  analysts 
 # "#084594" "#c6dbef" "#2171b5" "#9ecae1" "#f7fbff" "#4292c6" 
Run Code Online (Sandbox Code Playgroud)

现在我们已准备好制作情节了

pp <- plot(tdm, 
    terms = freqterms, 
    corThreshold = 0.5,
    nodeAttrs=list(fillcolor=vc))
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到节点的自定义非常灵活.如果传递正确的值,您可以将它们的颜色设置为颜色nodeAttrs.

彩色TermDocumentMatrix Plot