gpt4 book ai didi

r - 颜色和绘图术语文档矩阵

转载 作者:行者123 更新时间:2023-12-01 16:26:32 24 4
gpt4 key购买 nike

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

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)

有没有办法根据节点的顶点数量对节点进行着色?是否有一个例子可以使具有更多顶点的节点变得更大或者也达到这种效果?

最佳答案

我发现最终绘制的节点属于 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

关于r - 颜色和绘图术语文档矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com