按照下面绘制术语 - 文档矩阵的示例,
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)
有没有办法根据节点的顶点颜色对节点进行着色?有没有一个例子可以让更多顶点的节点更大或者那个效果更好?
我看来最终被绘制的节点属于该类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.

| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |