使用绝对词汇大小的词云

4
我正在尝试制作几个词云图来比较术语,这些术语本身嵌套在组内。我想为每个组制作一个词云图。R中的wordcloud软件包可以制作我需要的词云图,但每个新的词云图的单词大小都相对于最大和最小单词频率进行缩放。这可以通过scale参数设置。我的目标是制作词云图,其中单词的大小与单词的频率绝对相关,从而使不同的词云图可以进行视觉比较。
library(wordcloud)
dat <- data.frame(word = rep(LETTERS[1:3], 2), freq =  c(10, 5, 3, 20, 10, 6), group = c(1, 1, 1, 2, 2, 2))

dat
#  word freq group
#1    A   10     1
#2    B    5     1
#3    C    3     1
#4    A   20     2
#5    B   10     2
#6    C    6     2

wordcloud(dat$word[dat$group == 1], dat$freq[dat$group == 1]) 
wordcloud(dat$word[dat$group == 2], dat$freq[dat$group == 2]) # Currently the same

Current wordcloud

这是我从上述命令在MWE中的两个组运行得到的当前词云(尽管每次运行时确切位置会随机变化)。我希望第二组词云中的每个字母都比第一组大两倍,以符合数据(或者即使不是线性的,也要有一些合理的比例差异)。如何实现这一点?

1
我不确定在词云中是否有这样的方法。我很想知道是否有人能找到一种方法!您可以尝试在ggplot中制作词云:http://mhairihmcneill.com/blog/2016/04/05/wordclouds-in-ggplot.html - Mhairi McNeill
1个回答

2
嗯,这可能是一个绕弯子的方式。但如果我们使用单个锚点设置所有数据的比例尺呢。
anchor <- max(dat$freq)
wordcloud(dat$word[dat$group == 1], dat$freq[dat$group == 1], scale = c(8*max(dat$freq[dat$group == 1])/anchor, 0.5))
wordcloud(dat$word[dat$group == 2], dat$freq[dat$group == 2], scale = c(8*max(dat$freq[dat$group == 2])/anchor, 0.5))

谢谢,这是一个不错的解决方法,即使它不能完全使两个词云成比例,但已足够用于比较。我认为除此之外,使用wordcloud可能不可能做到更多 - 但我很难找到开发良好且技术能力强的软件包来制作词云和类似设计。如果有人有建议,那就太好了。 - Michael Veale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接