2016-05-17 6 views
4

私はグループ内にネストされた用語を比較するためにいくつかのワードクラウドを作ろうとしています。グループごとに1つのワードクラウドを作りたいと思います。 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の両方のグループで実行さ、Iは上記のコマンドから得る電流wordcloudあります。 2番目のグループのワードクラッドの各文字は、データに沿って最初の2倍になるようにしたいと思います(または、線形でなくても賢明なスケールされた差があるようにしてください)。

これはどのように達成できますか?

+1

私はワードクラウドでこれを行う方法がないと思います。私は誰もが見つけることができるかどうか見て興味があるだろう!あなたはggplotでwordcloudsを作ってみることができます:http://mhairihmcneill.com/blog/2016/04/05/wordclouds-in-ggplot.html –

答えて

2

Hm、これはラウンドアバウトな方法かもしれません。しかし、単一のアンカーを使用してすべてのデータのスケールを設定するとどうなりますか?

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

ありがとう、これはいい解決策です。正確に比例するワードクラウドは、比較のために十分です。私は、これを超えるものはおそらく 'wordcloud'を使っては不可能だと思っています - しかし、私はワードクラウドと同様のデザインを作ることができる、よく開発され、技術的に有能なソフトウェアパッケージを見つけるのに苦労しています。誰かが提案をしているなら、それは素晴らしいでしょう。 –