2017-05-10 4 views
0

単語のサイズは頻度に基づいていますが、単語の色を3番目の変数(ストレス各単語に関連するストレスの量、数値的または連続的な変数)。Rの継続的なメタデータに基づいて色を表示しているWordcloud

私は2つの異なる色(黄色と紫色)を与えましたが、私はもっと滑らかなものを求めていました。緑色から赤色に変わるパレットのような色の範囲がほしいです。

df = data.frame(word = c("calling", "meeting", "conference", "contract", "negotiation", "email"), 
n = c(20, 12, 4, 8, 10, 43), 
stress = c(23, 30, 15, 40, 35, 15)) 
df = tbl_df(df) 
wordcloud(words = df$word, freq = df$n, col = df$stress) 

この連続的なメタデータをどのように扱い、ストレスが上がったときにスムーズに変化する色を得る方法を知っている人はいますか?ありがとう!

+0

何か? – jazzurro

+0

RColorBrewerをbrew < - brewer.pal(12、 "Paired")として使用してください。 – PKumar

+0

@jazzurro(英語、フランス語、フランス語、フランス語、フランス語、フランス語、フランス語)しかし、色の濃さ/タイプは可変ストレスにマッピングされません。 –

答えて

2

これは潜在的な解決策です。あなたはあなたの仕事のためにwordcloud2パッケージを使いたいと思っています。それでは、問題を解決することができます。私はあなたの実際のデータを知らないので、プロトタイプを示すサンプルデータを作成しました。

多くの単語がある場合は、連続変数(ストレス)で色を追加することをお勧めしますか。あなたができることの1つは、cut()を使用して新しいグループ変数を作成することです。このようにして、グラフィックスで使用する色の数を減らすことができます。ここでは、viridisパッケージの5色の新しい列colorを作成しました。

wordcloud2()を使用すると、2つのものしか供給できません。 1つはデータで、もう1つは色です。フォントサイズは、単語の頻度を指定せずに反映します。

mydf = data.frame(word = c("calling", "meeting", "conference", "contract", "negotiation", 
          "email", "friends", "chat", "text", "deal", 
          "business", "promotion", "discount", "users", "family"), 
        n = c(20, 12, 4, 8, 10, 43, 33, 5, 47, 28, 12, 9, 50, 31, 22), 
        stress = c(23, 30, 15, 40, 35, 15, 30, 18, 10, 5, 29, 38, 45, 8, 3)) 


      word n stress 
1  calling 20  23 
2  meeting 12  30 
3 conference 4  15 
4  contract 8  40 
5 negotiation 10  35 
6  email 43  15 
7  friends 33  30 
8   chat 5  18 
9   text 47  10 
10  deal 28  5 
11 business 12  29 
12 promotion 9  38 
13 discount 50  45 
14  users 31  8 
15  family 22  3 

library(dplyr) 
library(wordcloud2) 
library(viridis) 

mutate(mydf, color = cut(stress, breaks = c(0, 10, 20, 30, 40, Inf), 
      labels = c("#FDE725FF", "#73D055FF", "#1F968BFF", 
         "#2D708EFF", "#481567FF"), 
      include.lowest = TRUE)) -> temp 

wordcloud2(data = temp, color = temp$color) 

enter image description here

+0

それは完全に働いた、私はより連続的なカラーパレットを使用し、それはちょうど美しく見えます! –

+0

@BenjaminTelkamp私はこの考えがあなたのために働いたことをうれしく思います! – jazzurro

0

またはその代わりに、正確な閾値と色を指定するもう少し自動何か:

library(RColorBrewer) 
library(wordcloud2) 

mydf = data.frame(word = c("calling", "meeting", "conference", "contract", "negotiation", 
         "email", "friends", "chat", "text", "deal", 
         "business", "promotion", "discount", "users", "family"), 
       n = c(20, 12, 4, 8, 10, 43, 33, 5, 47, 28, 12, 9, 50, 31, 22), 
       stress = c(23, 30, 15, 40, 35, 15, 30, 18, 10, 5, 29, 38, 45, 8, 3)) 

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

wordcloud2(mydf, color=color) 

サイズが「N」によって決定されるように、とのシェード色は「ストレス」によって決定される。 enter image description here

[3:7]は、カラースケールの範囲を調整するためのものです。 1が最も明るく、9が最も暗い。

次の方法で、他のカラーパレットのオプションをチェックすることがあります。このような

display.brewer.all() 
関連する問題