颜色和绘图术语文档矩阵

时间:2014-05-20 17:15:42

标签: 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)

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

1 个答案:

答案 0 :(得分:5)

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

中的节点属性描述

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

list(
    color=c(futures="blue", demand="red"),
    shape=c(crude="ellipse", budget="circle"),
)

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

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

我保存了您想要的术语,然后我基本上复制了plot命令中的代码来计算与截止值0.5的相关性,以查看该子集中每个单词连接的其他多少个单词。这是vtxcnt变量。 (可能有一种更有效的方法来提取它,但我找不到它)。现在我准备好分配颜色了

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

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

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

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

pp <- plot(tdm, 
    terms = freqterms, 
    corThreshold = 0.5,
    nodeAttrs=list(fillcolor=vc))

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

colored TermDocumentMatrix Plot