Chuyển đến nội dung chính

Hướng dẫn đồ họa với ggplot2

Trực quan hóa dữ liệu là kỹ năng thiết yếu đối với nhà khoa học dữ liệu. Nó kết hợp thống kê và thiết kế theo những cách có ý nghĩa và phù hợp.
Đã cập nhật 5 thg 10, 2026  · 6 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Trực quan hóa dữ liệu là kỹ năng thiết yếu đối với nhà khoa học dữ liệu. Nó kết hợp thống kê và thiết kế theo những cách có ý nghĩa và phù hợp. Ở một khía cạnh, trực quan hóa dữ liệu là một hình thức phân tích dữ liệu bằng đồ họa, nhấn mạnh việc biểu diễn chính xác và diễn giải dữ liệu. Ở khía cạnh khác, trực quan hóa dữ liệu dựa trên các lựa chọn thiết kế tốt để khiến biểu đồ của chúng ta hấp dẫn và hỗ trợ cả việc hiểu lẫn truyền đạt kết quả. Hơn nữa, còn có yếu tố sáng tạo, bởi cốt lõi của trực quan hóa dữ liệu là một hình thức giao tiếp bằng hình ảnh.

sơ đồ venn trực quan hóa dữ liệu

Điều quan trọng là hiểu sự khác biệt giữa trực quan hóa nhằm khám phá và nhằm giải thích. Trực quan hóa nhằm khám phá được tạo nhanh, nhiều dữ liệu và dành cho một nhóm nhỏ chuyên gia, như bạn và đồng nghiệp của bạn — mục đích chính của chúng là phân tích dữ liệu bằng đồ họa. Trực quan hóa nhằm giải thích tốn công sức, phụ thuộc dữ liệu cụ thể và hướng đến đối tượng rộng hơn, ví dụ trong ấn phẩm hoặc bài thuyết trình — chúng là một phần của quá trình truyền thông. Là một nhà khoa học dữ liệu, bạn cần có khả năng khám phá dữ liệu nhanh chóng, nhưng bạn cũng sẽ phải giải thích kết quả cho các bên liên quan. Thiết kế tốt bắt đầu từ việc suy nghĩ về khán giả — và đôi khi điều đó chỉ đơn giản là chính chúng ta.

sơ đồ trực quan hóa cho nhà khoa học dữ liệu

Biểu đồ phân tán

Bên dưới là một tập dữ liệu chứa trọng lượng trung bình của não và cơ thể của 62 loài thú.

 MASS::mammals
                              body   brain
Arctic fox                   3.385   44.50
Owl monkey                   0.480   15.50
Mountain beaver              1.350    8.10
Cow                        465.000  423.00
Grey wolf                   36.330  119.50
Goat                        27.660  115.00
Roe deer                    14.830   98.20
...
Pig                        192.000  180.00
Echidna                      3.000   25.00
Brazilian tapir            160.000  169.00
Tenrec                       0.900    2.60
Phalanger                    1.620   11.40
Tree shrew                   0.104    2.50
Red fox                      4.235   50.40 

Để hiểu mối quan hệ ở đây, bước đầu tiên rõ ràng nhất là vẽ một biểu đồ phân tán, như minh họa bên dưới:

ggplot(mammals, aes(x = body, y = brain)) +
  geom_point()
biểu đồ phân tán

Hai loài thú, voi châu Phi và voi châu Á, đều có trọng lượng não và cơ thể rất lớn, dẫn đến độ lệch dương trên cả hai trục.

Mô hình tuyến tính

Bây giờ, nếu chúng ta áp dụng một mô hình tuyến tính, đó sẽ là lựa chọn kém vì một vài giá trị cực trị có ảnh hưởng lớn.

ggplot(mammals, aes(x = body, y = brain)) +
  geom_point(alpha = 0.6) +
  stat_smooth(
    method = "lm",
    color = "red",
    se = FALSE
  )
mô hình tuyến tính trên biểu đồ phân tán

Áp dụng phép biến đổi log cho cả hai biến cho phép một đường khớp tốt hơn.

ggplot(mammals, aes(x = body, y = brain)) +
  geom_point(alpha = 0.6) +
  coord_fixed() +
  scale_x_log10() +
  scale_y_log10() +
  stat_smooth(
    method = "lm",
    color = "#C42126",
    se = FALSE,
    size = 1
  )
biến đổi log trên biểu đồ tuyến tính

Vì vậy, dù bắt đầu bằng một biểu đồ khám phá thô, nó đã cung cấp thông tin về dữ liệu của chúng ta và dẫn đến một kết quả có ý nghĩa.

Các biểu đồ của Anscombe

Khi chúng ta hình dung một mô hình tuyến tính, như trình bày trên biểu đồ vô danh này, chúng ta hình dung rằng mình đang mô tả dữ liệu trông như thế này.

mô hình tuyến tính trên biểu đồ vô danh

Nhưng cùng một mô hình đó có thể đang mô tả một tập dữ liệu rất khác, chẳng hạn mối quan hệ parabol, vốn cần một mô hình khác.

biểu đồ mối quan hệ parabol

Hoặc dữ liệu mà trong đó một giá trị cực trị có ảnh hưởng lớn, điều này trở nên rõ ràng khi loại bỏ điểm ngoại lai.

loại bỏ điểm ngoại lai trên biểu đồ tuyến tính

Và đôi khi, mô hình có thể đang mô tả một mối quan hệ mà thực tế không hề tồn tại vì một số giá trị cực trị có thể không chính xác.

giá trị cực trị không chính xác trên biểu đồ tuyến tính

Nếu chỉ dựa vào đầu ra số mà không vẽ dữ liệu, chúng ta sẽ bỏ lỡ những xu hướng nền tảng khác biệt và thú vị.

các xu hướng trong biểu đồ tuyến tính

Chúng ta có thể thấy trực quan hóa dữ liệu bắt nguồn từ thống kê và phân tích dữ liệu bằng đồ họa, nhưng nó cũng là một quá trình sáng tạo liên quan đến một mức độ thử nghiệm và sai sót nhất định.

Ví dụ tương tác

Trong ví dụ sau, trước tiên bạn sẽ nạp gói ggplot2 bằng library(). Sau đó, bạn sẽ dùng str() để khám phá cấu trúc của tập dữ liệu mtcars.

Cuối cùng, bạn sẽ trực quan hóa ggplot và cố gắng hiểu ggplot xử lý dữ liệu như thế nào.

Bạn sẽ dùng tập dữ liệu mtcars chứa thông tin về 32 mẫu xe từ một số tạp chí Motor Trend năm 1973. Tập dữ liệu này nhỏ, trực quan và chứa nhiều biến liên tục lẫn phân loại.

# Load the ggplot2 package
library(ggplot2)

# Explore the mtcars data frame with str()
str(mtcars)

# Execute the following command
p <- ggplot(mtcars, aes(cyl, mpg)) +
  geom_point()

Khi chạy đoạn mã trên, ta thu được kết quả sau:

data.frame':    32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
biểu đồ ggplot

Để tìm hiểu thêm về trực quan hóa dữ liệu với ggplot, vui lòng xem video từ khóa học Introduction to Data Visualization with ggplot2 của chúng tôi. Ngoài ra, hãy giữ ggplot2 Cheat Sheet bên cạnh như một tài liệu tham khảo tiện dụng. 

Nội dung này được trích từ khóa học Introduction to Data Visualization with ggplot2 của DataCamp do Rick Scavetta giảng dạy.

Chủ đề
R
Khoa học Dữ liệu

Khóa học liên quan

Khóa học

Trực quan hóa dữ liệu nâng cao với ggplot2

4 giờ
57.8K
Học cách sử dụng facets, hệ tọa độ và thống kê trong ggplot2 để tạo ra các biểu đồ giải thích có ý nghĩa.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm