首页 > 解决方案 > 根据频率缩放颜色的词云

问题描述

我需要创建一个颜色相同但强度不同的彩色词云。这是一个示例,但在地图的情况下使用。

在此处输入图像描述

如您所见,地图以一种颜色着色,但根据右侧比例中显示的客户数量而具有不同的强度。

这是我的数据框:

> head(d,20)
                   word freq
paris             paris 1250
saint             saint 1247
les                 les  694
marseille     marseille  500
lyon               lyon  312
toulouse       toulouse  226
nantes           nantes  204
strasbourg   strasbourg  177
seine             seine  174
montpellier montpellier  170
nice               nice  169
mer                 mer  160
rennes           rennes  153
bordeaux       bordeaux  144
lille             lille  144
bois               bois  126
marne             marne  123
dijon             dijon  119
nancy             nancy  116
provence       provence  115

这是我创建词云的代码

library("wordcloud")
library(wordcloud2)


color_range_number<-length(unique(d$freq))
color <- colorRampPalette(brewer.pal(9,"Blues")[3:7])(color_range_number)[factor(d$freq)]

wordcloud(words =d$word,freq =d$freq,min.freq=1,max.words=100,color=color,random.order=FALSE,rot.per=0.35)

但我得到了这个:

在此处输入图像描述

谢谢你的建议 !

标签: r

解决方案


如果您只想要一种蓝色并且只想更改 alpha,您甚至不需要该colorRampPalette功能,只需使用alphascales 中的功能。

d <- read.table(text = "
city                   word freq
paris             paris 1250
saint             saint 1247
les                 les  694
marseille     marseille  500
lyon               lyon  312
toulouse       toulouse  226
nantes           nantes  204
strasbourg   strasbourg  177
seine             seine  174
montpellier montpellier  170
nice               nice  169
mer                 mer  160
rennes           rennes  153
bordeaux       bordeaux  144
lille             lille  144
bois               bois  126
marne             marne  123
dijon             dijon  119
nancy             nancy  116
provence       provence  115", header = T)

library(wordcloud)
library(scales)
wordcloud(words =d$word,freq =d$freq,min.freq=1,max.words=100,color=alpha("blue", seq(0.4,1, 0.05)),random.order=FALSE,rot.per=0.35)

在此处输入图像描述


推荐阅读