2016-05-17 37 views
4

我正在嘗試使用幾個wordcloud來比較術語,這些術語本身嵌套在組中。我想爲每個組製作一個wordcloud。 R中的wordcloud包可以創建我需要的wordcloud,但是每個新的wordcloud都具有縮放到相對到最大和最小詞頻的大小。這可以通過參數scale進行設置。具有絕對字大小的Wordcloud

我的目標是製作wordclouds,其中單詞的大小與單詞的頻率完全相關,從而可以在視覺上比較不同的wordcloud。

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

這是當前wordcloud我從上述命令取得,對在MWE兩組運行(雖然確切位置將隨每次執行時隨機變化)。我希望第二組的wordcloud中的每個字母都是第一個字符的兩倍,與數據一致(或者即使它不是線性的,也存在一些明顯的縮放差異)。

這是如何實現的?

+1

我不確定在wordcloud中有這樣做的方法。我很想看看有沒有人能找到一個!您可以嘗試在ggplot中製作wordcloud:http://mhairihmcneill.com/blog/2016/04/05/wordclouds-in-ggplot.html –

回答

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)) 
+0

謝謝,這是一個很好的解決方法,即使它不會使兩個wordclouds正好成比例,足以進行比較。我認爲除此以外的任何事情可能都不可能使用'wordcloud' - 但我很努力地找到可以製作wordclouds和類似設計的完善開發和技術上可行的軟件包。如果有人有建議,那會很棒。 –

相關問題