LoginSignup
3
3

More than 3 years have passed since last update.

ggwordcloudを使って、愛と感謝のワードを嵐のロゴにビジュアル化する

Last updated at Posted at 2021-01-02

hearth&arashi.png

はじめに

アイドルグループの嵐が2021年から活動を休止します。
嵐に、wordcloudを用いて愛と感謝を込めてみました。
マスクシェイプ画像ファイルを使用して希望する形にwordcloudを表示したい場合は、パッケージwordcloud2を使用しますが、今回はwordcloud2の代わりに、ggwordcloudを使用しています。
ggwordcloudはグラフィック関数ggplot2を使ってwordcloud2と同様のアルゴリズムで表示することができます。wordcloud2はRmarkdownでは複数の結果を表示するのは難しいのですが、ggwordcloudは複数の結果を簡単に表示することができます。

開発環境

OS: Windows10
R4.02

パッケージ"ggwordcloud"とデータセットの読み込み

package
library(ggwordcloud)
data("love_words")
data("thankyou_words")
print(str(love_words))
print(str(thankyou_words))

ggwordcloudについては下記のサイトをご覧ください。
ggwordcloud: a word cloud geom for ggplot2
Package ‘ggwordcloud’
2つのデータセット"love_words"と"thankyou_words"が付属しています。2つのデータセットのデータ構成について関数str()で表示した結果です。
"love_words" 

tibble 147 x 4
$ lang : chr [1:147] "zh" "en" "es" "ar" ...
$ word : chr [1:147] "愛" "Love" "Amor" "" ...
$ native_speakers: num [1:147] 1200 400 480 245 322 76.8 260 77 220 154 ...
$ speakers : num [1:147] 1200 800 555 515 442 ...

"thankyou_words"

tibble 133 x 5
$ iso_639_3 : chr [1:133] "zho" "eng" "spa" "ara" ...
$ word : chr [1:133] "謝謝" "Thank you" "Gracias" "" ...
$ name : chr [1:133] "Chinese" "English" "Spanish" "Arabic" ...
$ native_speakers: num [1:133] 1200 400 480 245 322 76.8 260 77 220 154 ...
$ speakers : num [1:133] 1200 800 555 515 442 ...

ggwordcloudでデータセット"love_words"をクラウド表示

ggwordcloud_love_words
set.seed(42)
ggplot(
  love_words,
  aes(
    label = word, size = speakers,
    color = speakers
  )
) +
  geom_text_wordcloud_area(aes(angle = 45 * sample(-2:2, nrow(love_words),
    replace = TRUE,
    prob = c(1, 1, 4, 1, 1)
  )),
  mask = png::readPNG(system.file("extdata/arashi2.png",
    package = "ggwordcloud", mustWork = TRUE
  )),
  rm_outside = TRUE
  ) +
  scale_size_area(max_size = 40) +
  theme_minimal() +
  scale_color_gradient(low = "darkred", high = "red")

mask = png::readPNG(system.file("extdata/arashi2.png",
とありますが、マスクに使う画像ファイルはRのlibraryフォルダの下記のパスに保存しておきます。
library\ggwordcloud\extdata

データセット"thankyou_words"についても同様のスクリプトです。

通しのスクリプト

マスクの画像はデフォルトで保存されている、hearth.pngに代えています。

ggwordcloud
library(ggwordcloud)
data("love_words")
data("thankyou_words")
print(str(love_words))
print(str(thankyou_words))

set.seed(42)
ggplot(
  love_words,
  aes(
    label = word, size = speakers,
    color = speakers
  )
) +
  geom_text_wordcloud_area(aes(angle = 45 * sample(-2:2, nrow(love_words),
    replace = TRUE,
    prob = c(1, 1, 4, 1, 1)
  )),
  mask = png::readPNG(system.file("extdata/hearth.png",
    package = "ggwordcloud", mustWork = TRUE
  )),
  rm_outside = TRUE
  ) +
  scale_size_area(max_size = 40) +
  theme_minimal() +
  scale_color_gradient(low = "darkred", high = "red")

ggplot(
  thankyou_words,
  aes(
    label = word, size = speakers,
    color = speakers
  )
) +
  geom_text_wordcloud_area(aes(angle = 45 * sample(-2:2, nrow(thankyou_words),
    replace = TRUE,
    prob = c(1, 1, 4, 1, 1)
  )),
  mask = png::readPNG(system.file("extdata/hearth.png",
    package = "ggwordcloud", mustWork = TRUE
  )),
  rm_outside = TRUE
  ) +
  scale_size_area(max_size = 40) +
  theme_minimal() +
  scale_color_gradient(low = "darkred", high = "red")

こちらにも実行結果をアップしてあります。
https://www.yanwari-data.com/entry/2021/01/02/155958

参考:
ggwordcloud: a word cloud geom for ggplot2
Package ‘ggwordcloud’

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3