词云,其权重在 R 中以颜色的大小和关系方向表示

Word cloud with weights represented in size and direction of relationship by colour in R

提问人:clara 提问时间:7/31/2023 最后编辑:neilfwsclara 更新时间:8/1/2023 访问量:41

问:

我已经做了一个 PCA,我想创建一个词云,代表 PCA 组件不同维度(正或负)的权重和关系方向。 我在 R 中有这段代码

pca_loadings$colorRC1 <- ifelse(pca_loadings[,1] >= 0, 'red', 'blue')
pca_loadings$absRC1 <- abs(pca_loadings[,1]) 
wordcloud::wordcloud(words = pca_loadings$V5, 
                     freq = pca_loadings$absRC1, scale = c(3,1), 
                     min.freq = 0.3, 
                     max.words = 20, 
                     ordered.colors = T, 
                     colors = pca_loadings$colorRC1, 
                     rot.per = 0)

它有点工作。 是存储每个维度名称的位置,是组件 1 的每个维度的权重的绝对值。我希望截止值为 0.3,因此任何较小的内容都不包括在词云中。pca_loadings$V%absRC1

为了使颜色根据它是正数还是负数而变化,我创建了一个名为该变量的变量,该变量基本上查看每个维度的权重,如果数字为 >0,则在该行中写入红色,如果<0,则写入蓝色。colorRC1

目前为止,一切都好。但是,由于最小阈值为 0.3,因此每当词云函数到达绝对值小于 0.3 的行时,它都会省略它,但不会跳过颜色行,因此列和颜色列不匹配。基本上在输出中,大小很好,但是由于每当值小于 0.3 时,它都不会跳过颜色列中的一行,因此数字的方向(正数或负数)与打印它们的颜色不匹配。absRC1

有谁知道如何解决这个问题?

R PCA 词云

评论

0赞 Jon Spring 7/31/2023
在将数据发送到词云之前,您可以过滤掉/子集数据以排除值过低的行。

答:

0赞 Till 8/1/2023 #1

我无权访问您的表,所以我正在创建 a 类似于此示例所需的功能。pca_loadingsdata.frame

library(tidyverse) 
  
pca_loadings <- 
  data.frame(
    V5 = words[1:30],
    RC1 = rnorm(30)
  )

我们可以对颜色和绝对值进行修改,然后过滤掉以下值的行。dplyr::mutate()0.3dplyr::filter()

pca_loadings_mod <- 
  pca_loadings |> 
  mutate(colorRC1 = ifelse(RC1 >= 0, 'red', 'blue'),
         absRC1 = abs(RC1)) |> 
  filter(absRC1 >= .3)

wordcloud::wordcloud(words = pca_loadings_mod$V5, 
                     freq = pca_loadings_mod$absRC1, scale = c(3,1), 
                     max.words = 20, 
                     ordered.colors = TRUE, 
                     colors = pca_loadings_mod$colorRC1, 
                     rot.per = 0)

评论

0赞 clara 8/1/2023
谢谢,我现在尝试一下,但它应该可以工作。