4

我用代码在 R 中创建了一个词云:

wordcloud(words$term, words$freq, random.order=FALSE, colors=colorRampPalette(brewer.pal(9,"Blues"))(32), scale=c(5, .5))

它工作得很好,只是它以这样一种方式对术语进行着色,即最常见的出现在颜色的最暗阴影中,而最不常见的出现在颜色的最浅阴影中。但我希望它是相反的方式。任何指针?谢谢。

4

2 回答 2

7

好问题。您可以指定非随机颜色分配 ( random.color = FALSE),这将使其基于频率,然后选择colors使用按您喜欢的顺序排列的调色板的值。

例如,如果colors = "black"Vignette 中的默认值/示例与您想要的相反,则选择colors = "Pastel"您喜欢的其他比例。

RColorBrewer就个人而言,我使用带有顺序调色板的Color Brewer ( )来完成此操作:

pal = brewer.pal(9,"Blues")
wordcloud(words = d$word, 
          freq = d$freq, 
          scale = c(8,.3), 
          random.order = F,
          random.color = F,
          colors = pal) 

rev或者,正如@Victorp 在评论中指出的那样,您可以在您的颜色托盘上使用。这是一个例子:

pal = brewer.pal(9,"BuGn")
wordcloud(words = d$word, 
          freq = d$freq, 
          scale = c(8,.3), 
          random.order = F,
          random.color = F,
          colors = rev(pal))    

这给了你这样的东西:

词云

更新:我写了一篇博客文章,涵盖了这个主题以及 n-gram 案例和为你的词云抓取数据:http ://hack-r.com/?p=35

于 2014-08-26T12:00:33.093 回答
3

Victorp 在评论部分提供的另一个出色的解决方案是使用以下作为color参数:

colors=rev(colorRampPalette(brewer.pal(9,"Blues"))(32)[seq(8,32,6)])
于 2014-08-26T12:41:07.937 回答