R言語クラウドの究極のソリューション-wordcloud 2パッケージ

4459 ワード

R言語クラウドの究極のソリューション-wordcloud 2パッケージ
R言語で多様な語群を描くこともできます.wordcloud 2はwordcloud 2に基づく.jsパッケージのRパッケージで、HTML 5のcanvasを使用して描画します.ブラウザの可視化には、かつてのRパッケージworldcoudに対して動的かつインタラクティブな効果があります.
wordcloud 2は任意の形状の語雲描画もサポートしており、これも私がずっと求めていた特性です.
インストール&例
githubからwordcloud 2パッケージをインストールするには:
if (!require(devtools)) install.packages("devtools")
devtools::install_github('lchiffon/wordcloud2')

パッケージにはdataが2部含まれている.frame形式の語周波数データ:英語版のdemoFreqと中国語版のdemoFreqCは、wordcloud2を使用して直接描画すればよい.自分の語周波数データを描く必要がある場合は、類似のデータボックスを構築するだけでよい.第1列は語を表し、第2列は対応する語周波数を格納する.
library(wordcloud2)
wordcloud2(demoFreqC)
wordcloud2(demoFreq)
##        
# df = data.frame(letters, rpois(26, 20)) 
# wordcloud2(df)

カスタムカラー
ここでの色は、backgroundColorcolorの2つのパラメータに対応する背景色と語色を含む.この2つのパラメータは、CSSが認める任意のパラメータ値、例えば'red','blue'または'rgb(0,0,0)'および16進数の'#ff 2 fe 9'などを受け入れることができる.
さらに、colorパラメータには、より多くの許容可能なパラメータがあります.
  • に組み込まれたランダムカラー生成スキーム:random-lightrandom-dark、javasriptで対応するランダム関数
  • をカスタマイズ
  • javasriptコールバック関数:jsで
  • などの任意の色生成関数を作成します.
    js_color_fun = "function (word, weight) {
      return (weight > 2000) ? '#f02222' : '#c09292';
    }"
    wordcloud2(demoFreqC, color = htmlwidgets::JS(js_color_fun), 
               backgroundColor = 'black')

    ここでは,htmlwidgetsJS関数を用いて文字形式のパラメータ値をjs関数に解析する必要がある.
  • Rの関数ベクトル:jsコールバック関数は多くの純R言語のユーザーを混乱させ、最も簡単な方法はカスタマイズされた色ベクトルを伝えることです.wordcloud2(demoFreqC, color = ifelse(demoFreqC[, 2] > 2000, '#f02222', '#c09292')行のコードR言語関数はjsコールバック関数に代わって、効果は同じです.

  • カスタムシェイプ
    色を定義することをマスターして、あなたの語雲を黄時紫にすることができますが、馬のように牛のように羊のようにすることはできません.変形の最も簡単な方法は、shapeパラメータ、例えばwordcloud2(demoFreqC,shape='star')を定義することである.また、「diamond」、「cardioid」などのパラメータ(jsスクリプトで事前に定義された対応する関数)もサポートされています.詳細は、関数ヘルプドキュメントを参照してください.
    内蔵されているいくつかのパラメータはあまり面白くなく、完全なカスタマイズこそボートを漕ぐことができます.wordcloud2では、図の黒い領域に語雲を埋め込む画像を入力できます.これで、牛と馬を見つけて、あなたの雲は変えることができます.
    wordcloud2(demoFreqC, figPath='~/Desktop/niu.jpg') 
    wordcloud2(demoFreqC, figPath='~/Desktop/ma.jpg') 

    コードに必要な画像は上図で切り取ることができますが、ここでは置きません.また、文字の形状を描くには、wordcloud 2関数を使用して文字を描く必要があります.親切な作者の郎先生はすでに相応のインタフェースletterCloud関数をカスタマイズして、letterCloud(demoFreqC, word = 'R')を実行してみました.
    この関数の背後にある論理は、上述したように、figPathパラメータにピクチャを描画してから入力される.ここまで来て、思わずcosの1篇の文章を思い出します:showtext:フォント、面白いフォントと面白い図形、文の中でshowtextパッケージを使って不思議なフォントを呼び出して面白い図形を描きます.ここでは、wmpeople 1をダウンロードすることもできます.TTFフォントは男と女の図案を描き、wordcloud 2を呼び出して対応する形の語群を描く.
    library(showtext)
    library(Cairo)
    
    link = "http://img.dafont.com/dl/?f=wm_people_1";
    download.file(link, "wmpeople1.zip", mode = "wb");
    unzip("wmpeople1.zip");
    font.add("wmpeople1", "wmpeople1.TTF");
    
    plot_shape 

    次に宝を洗うトップページで「男」と「女」の2つのキーワードを検索します.検索結果のページを処理し,分詞と語周波数統計を行う.TF-IDF指標を計算し,用語群で示す.語群を描くデータは、大量の低周波数語と少数の高周波数語という長尾分布であるべきである.高周波語の描画の特徴、低周波語は残りの位置を充填して、目立つと美しい効果を達成します.したがって,処理中にTF−IDFが0または欠落した値はいずれも1として埋め込まれ,これらの低周波数語を表示させる.
    library(jiebaR)
    readChineseWords    tf-idf 
    cc = worker()
    new_user_word(cc,'   ','ddk')
    male_words = cc[male_str]
    female_words = cc[female_str]
    
    idf = get_idf(list(male_words, female_words))
    get_tf_idf 

    男性の検索結果は主に「海澜」、「健详」と「牧之逸」のブランド情报(后2人はまだ闻いたことがありませんが...)、「コットン」や「シャツ」など、臭い男は「防臭」.右の中の図の“底を打つズボン”、“光を防ぐ”と“日焼け止め”、“防水”、テーマはとても明確で、また1年の夏で、女の子のスカートは街の隅々まで飛んで、涼しい同時にオオカミの天気を防ぐことに注意します.
    相互作用
    デフォルトで生成される語群にはインタラクティブな効果があります.マウスを浮かべると、jsコールバック関数を内蔵した効果で、対応する語周波数が表示されます.下のコードが空の関数に伝わるなど、js関数を自分で作成して上書きすることができ、描かれた語群にはインタラクティブな効果はありません.
    hoverFunction = htmlwidgets::JS("function hover() {}")
    wordcloud2(demoFreq,hoverFunction = hoverFunction)

    この部分は純粋なjsで、能力があるか興味があるかで異なる効果をしたいので、ソースコードのhoverを見ることができます.js.
    締めくくり
    最後に、より詳細なデバッグについては、wordcloud 2の著者の紹介とwordcloud 2を参照してください.jsのAPIドキュメント.
    wordcloud 2作者の郎大為先生とwordcloud 2に感謝します.jsの作者timdream.興味と能力のある友达はソースコードを読むことができて、脳の穴を開けていくつかの改善をして、例えば下の絵の速度(wordcloud 2.jsのアルゴリズムを改善する)を高めて、複数の語雲を組み合わせます.
    本文は杜亜磊の個人ブログから転載し、雪晴データ網はすでに転載を許可された.転載本文はリンクを明記してくださいhttp://www.xueqing.tv/cms/article/226