1 Giới thiệu

ggplot2 là thư viện đồ hoạ nổi tiếng, ngày càng được sử dụng nhiều. Mặc dù layout mặc định của ggplot2 đẹp và có thể dùng ngay cho trình diễn hoặc in ấn, bạn vẫn có thể tiến hành điều chỉnh nó cho phù hợp với nhu cầu của mình, thông qua các function của ggplot2 để tuỳ biến. Đối với nhiều doanh nghiệp hoặc tổ chức, đồ hoạ trong các báo cáo chính thức hoặc nội bộ phải theo những quy chuẩn nhất định và thậm chí phải tuân thủ khuôn mẫu (template) chung. Nếu như:

  • Bạn cảm thấy chán layout mặc định của ggplot2 và muốn thay đổi
  • Bạn muốn sử dụng những layout khác, cũng thông dụng nhưng lại không có thời gian để tự mình viết mã R
  • Bạn muốn 1 giải pháp mì ăn liền

ggthemes là package bạn cần. Package cung cấp thêm nhiều layout cho ggplot2 với cú pháp lệnh đơn giản, tuân theo quy tắc của grammar of graphic là nền tảng mà ggplot2 xây dựng do nên có thể sử dụng dễ dàng và nhanh chóng.

2 Sử dụng ggthemes làm đẹp cho ggplot2

2.1 Cài đặt

install.packages("ggplot2")
install.packages("ggethemes")
library(ggplot2)
library(ggthemes)

2.2 Sử dụng các layout dựng sẵn

2.2.1 Theme Tufte

Được xây dựng dựa trên chương 6 của Edward Tufle trong tác phẩm The Visual Display of Quantitative Information, 2001.

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  ggtitle("Cars") + 
  geom_rangeframe() +
  theme_tufte()  + 
  scale_x_continuous(breaks = extended_range_breaks()(mtcars$wt)) +
  scale_y_continuous(breaks = extended_range_breaks()(mtcars$mpg))

2.2.2 Theme Economist

Tương tự như chart được publish trên tạp chí Economist.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_economist() + 
  scale_colour_economist() 

2.2.3 Theme Economist White

Tương tự như chart được publish trên tạp chí Economist.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_economist_white() + 
  scale_color_economist()

2.2.4 Theme solid

Theme này gỡ bỏ tất cả những đối tương non-geom (đường, chữ, …), sử dụng khi cần làm nổi bật các đối tượng geometric.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_solid()

2.2.5 Theme Solarized mặc định

Tham khảo từ bẳng màu được đăng tải ở http://ethanschoonover.com/solarized.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_solarized()

2.2.6 Theme Solarized tối

Tham khảo từ bẳng màu được đăng tải ở http://ethanschoonover.com/solarized.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_solarized(light = FALSE) +
  scale_colour_solarized("red")

hoặc

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_solarized(light = FALSE) +
  scale_colour_solarized("blue")

2.2.7 Theme Solarized 2

Tham khảo từ bẳng màu được đăng tải ở http://ethanschoonover.com/solarized.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_solarized_2()

2.2.8 Theme Wall Street Journal

Tương tự như chart được đăng trên tạp chí Wall Street Journal.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_wsj() + 
  scale_colour_wsj("colors6", "")

2.2.9 Theme base

Tương tự như chart vẽ bằng gói graphic base của R.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_base()

2.2.10 Theme Stata

Tương tự như chart vẽ bằng Stata.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_stata()

2.2.11 Theme Excel 2003

Tương tự như chart vẽ bằng Excel 2003.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_excel()

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_excel() +
  scale_fill_excel()

2.2.12 Theme LibreOffice Calc

Tương tự như chart vẽ bằng Libre Office.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_calc() + 
  scale_color_calc()

2.2.13 Theme Few

Theme được xây dựng dựa trên bài viết của Stephen Few: “Những nguyên tắc thực hành về màu sắc của đồ thị”.

Chi tiết ở đây.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_few() + 
  scale_colour_few()

2.2.14 Theme 538

Theme tương tự như chart được publish trên http://fivethirtyeight.com - đây là website về data visualization rất nổi tiếng.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") + geom_smooth(method = "lm", se = FALSE) +
  scale_color_fivethirtyeight("cyl") +
  theme_fivethirtyeight()

2.2.15 Theme Google Docs

Theme tương tự chart vẽ bằng Google Docs.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_gdocs() + 
  scale_color_gdocs()

2.2.16 Theme Highchart

Theme tương tự như chart vẽ bằng thư viện Java Script Highchart.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_hc() + 
  scale_colour_hc()

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_hc(bgcolor = "darkunica") +
  scale_colour_hc("darkunica")

dtemp <- data.frame(months = factor(rep(substr(month.name,1,3), 4), levels = substr(month.name,1,3)),
                    city = rep(c("Tokyo", "New York", "Berlin", "London"), each = 12),
                    temp = c(7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6,
                             -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5,
                             -0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0,
                             3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8))
ggplot(dtemp, aes(x = months, y = temp, group = city, color = city)) +
  geom_line() +
  geom_point(size = 1.1) + 
  ggtitle("Monthly Average Temperature") +
  theme_hc() +
  scale_colour_hc()

ggplot(dtemp, aes(x = months, y = temp, group = city, color = city)) +
  geom_line() + 
  geom_point(size = 1.1) + 
  ggtitle("Monthly Average Temperature") +
  theme_hc(bgcolor = "darkunica") +
  scale_fill_hc("darkunica")

2.2.17 Theme Tableau

Tableau là phần mềm data visualzation và business inteligence rất nổi tiếng hiện nay.

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_igray() + 
  scale_colour_tableau()

ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
  geom_point() +
  ggtitle("Cars") +
  theme_igray() + 
  scale_colour_tableau("colorblind10")

3 Tham chiếu

Bài viết sử dụng thông tin và mã nguồn (có điều chỉnh) từ trang web chính thức của package ggthemes