Tạo wordcloud với ggplot2

Tác giả: Hoàng Đức Anh | 2018-10-01

Khi phân tích dữ liệu, một trong những định dang dữ liệu chúng ta thường xuyên phải sử dụng là định dạng text. Với loại dữ liệu này, một trong những cách để trực quan hóa hiệu quả là sử dụng wordcloud. Trong bài viết này, Ranalytics sẽ hướng dẫn các bạn tạo wordcloud nhanh chóng theo phong cách của tidyverse với package ggwordcloud - một package mới trong hệ sinh thái của R.

# Cài đặt
install.packages("ggwordcloud")
# Loading package
library(tidyverse)
library(ggwordcloud)

Ta sẽ tạo wordcloud từ tập dữ liệu có sẵn của ggwordcloudlove_words_small.

data("love_words_small")
love_words_small %>% head %>% knitr::kable()
lang word native_speakers speakers
zh 1200.0 1200.0
en Love 400.0 800.0
es Amor 480.0 555.0
ar حب 245.0 515.0
hi प्यार 322.0 442.0
fr Amour 76.8 350.8
# Đặt theme minimal là default
theme_set(theme_minimal())

Để tạo wordcloud, ta có thể sử dụng geom_text_wordcloud có sẵn. Tương tự như các geom_* khác của R, geom_text_wordcloud cũng hỗ trợ các aes như size, color. Xem các ví dụ dưới đây.

# Ví dụ 1: wordcloud đơn giản
love_words_small %>% 
  ggplot(aes(label = word)) +
  geom_text_wordcloud()

# Ví dụ 2: wordcloud có màu sắc và kích cỡ
love_words_small %>% 
  ggplot(aes(label = word, size = speakers)) +
  geom_text_wordcloud() +
  scale_size_area(max_size = 20)

# Ví dụ 3: Tạo màu sắc random cho chữ

love_words_small %>% 
  ggplot(aes(label = word, 
             size = speakers,
             col = as.factor(sample.int(
               8, nrow(.), replace = T
             )))) +
  geom_text_wordcloud() +
  scale_size_area(max_size = 20) 


Ngoài ra, ggwordcloud còn cho phép tạo khung của wordcloud từ ảnh. Xem ví dụ sau.

set.seed(42)
love_words_small %>%
  ggplot(aes(
    label = word,
    size = speakers,
    color = as.factor(sample.int(7, nrow(.), replace = T))
  )) +
  geom_text_wordcloud(mask = png::readPNG(
    system.file(
      "extdata/hearth.png",
      package = "ggwordcloud",
      mustWork = TRUE
    )
  ),
  rm_outside = TRUE) +
  scale_size_area(max_size = 20)


Như vậy, chúng ta đã vừa nắm được cách thức đơn giản để tạo wordcloud với hệ sinh thái của ggplot2. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn!

comments powered by Disqus