【发布时间】:2020-03-06 00:00:55
【问题描述】:
我有一个 wordcloud,其中许多项目的频率为 1,但显示它们仍然很重要。我希望使用颜色的渐变(如灰色调)随机显示那些“频率为 1”的结果——因此频率为 1 的每个单独的项目更容易阅读——而任何超过 1 的项目都会得到一个指定颜色(我会提前知道唯一频率的数量。例如在下面的数据中:1、2、3、9、16)。
我的数据框提到2看起来像这样:
id n mention
1 1 las vísceras
2 1 museo de vivos
3 1 el hormiguero
4 1 las plataformas
5 1 lejos
6 1 madrileña
7 1 madrileñas
8 1 matritenses
9 2 esta ciudad
10 2 la gran ciudad
11 2 madrileño
12 2 sí mismas
13 3 una ciudad
14 9 aquí
15 10 madrid
16 16 la ciudad
17 1 ratonera
18 1 los madriles
19 1 allá
20 1 nuestra ciudad
到目前为止,我有这个,它可以满足我的要求,除了频率为 1 的所有项目都是相同的灰色,我希望通过随机改变它们的音调来使它们更容易阅读(通过指定一个手动设置颜色或使用已建立的渐变或范围):
wordcloud(words = mentions2, freq = mentions2$n, min.freq = 1,rot.per=0,colors = c("grey28","firebrick1", "firebrick2","firebrick3","firebrick3", "firebrick4"))
我不确定如何分别处理频率为 1 的人与频率较高的人。有什么想法吗?
编辑:按照此处的建议:Customised Word Cloud in two different colors in R,我能够将我的数据帧分成两部分:频率为 1 和频率 >1。但我仍然不知道如何对它们应用两个单独的颜色规则:
- 频率 1:随机分配颜色(例如,不同的冷色调 音调)
- frequency >1:根据频率分配颜色(例如,a 暖色渐变)
freq1<- mentions2[ which(mentions2$n == 1) ,]
freq2<- mentions2[ which(mentions2$n >= 2) ,]
AllWords = rbind(freq1, freq2)
Colors = c(rep("blue", nrow(freq1)), rep("red", nrow(freq2)))
wordcloud(words = AllWords$mentions, freq = AllWords$n, min.freq = 1,rot.per=0,colors=Colors, ordered.colors=TRUE)
编辑 2:感谢 Armando 让我了解 wordcloud 不具备我需要根据频率以外的变量分配颜色的灵活性这一事实。我最终使用 wordcloud2 在我的数据框中添加了一个“颜色”列,并为我的所有“频率=1”结果随机分配了一种颜色:
colors<-c("#666666","#777777","#888888","#222222","#555555","#444444","#333333","#222222","#111111","#000000")
nummentions1<-count(madridmentions2[madridmentions2$n==1,])
mentions2[mentions2$n==1,]$color <-sample(colors,1,size=as.numeric(nummentions1))
mentions2[madridmentions2$n>=2,]$color <- "#db0030"
wordcloud2(data=mentions2, color = mentions2$color, backgroundColor = "white",rotateRatio=0,shape = 'circle',fontFamily = 'Helvetica')
【问题讨论】:
标签: r