Conditional wordcloud R

问题描述 投票:0回答:1

我已经搜索了几个小时,距离很近,但无法正常工作。基本上,我想使用一个词频来构建词云。但是,我想为绘制的颜色添加一些含义。因此,我在data.frame中添加了第三列,该列将限制wordcloud中使用的颜色。

在下面的示例中,您将看到“ diff”列是每个城市之间的人口差异阈值(6)。

我希望绿色和红色反映每个城市人口与阈值之间的差异大小(这要归功于此处的帖子),棘手的一点是,我希望城市人口等于具有特定颜色(灰色,“#c5c5c5”)的阈值,而我只是做不到。

library(wordcloud)
library(tm)

DF <- data.frame(
city = c("New York","Barcelona","Paris","Rome","London", "Brussels", "Leeds", "Berlin"),
pop = c(12,7,5,7,6,2,0.8,6),
diff= c(6,1,-1,1,0,-4,-5.2,0))


custColorPal <- colorRampPalette(c("#ff0000","#00cc00"))

color_range_number <- length(unique(DF$diff))

colors <- custColors[factor(DF$diff)]
custColors <- custColorPal(color_range_number)

wordcloud(DF$city, DF$pop, colors=custColors, min.freq = 0.1, ordered.colors=FALSE)

在上面的示例中,我希望两个城市为灰色,三个城市为绿色,三个城市为红色。

感谢任何指针

欢呼声

r word-cloud wordcloud2
1个回答
0
投票

如果要为特定的单词分配特定的颜色,则可以创建一个包含颜色信息的新列。在这里,我使用了三种颜色。如果您需要使用渐变色,则必须考虑如何做到这一点。绘制wordcloud时,需要指定random.order = FALSE, ordered.colors = TRUE

mutate(DF,
       color = case_when(diff > 0 ~ "green",
                         diff == 0 ~ "grey",
                         diff < 0 ~ "red")) -> DF

wordcloud(words = DF$city, freq = DF$pop, colors = DF$color,
          min.freq = 0.1, random.order = FALSE, ordered.colors = TRUE)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.