messenger_logo
Liên hệ qua Messenger
SciEco

[BLOG 005] Giới thiệu thư viện ggplot2 - Ứng dụng trực quan hoá dữ liệu và vẽ biểu đồ trong R

KH
Khanh Hoang
Ngày viết: 24/09/2023

1. Giới thiệu ggplot2

ggplot2 là một trong những thư viện trực quan hoá dữ liệu phổ biến nhất trong ngôn ngữ R. Nó được phát triển bởi Hadley Wickham và dựa trên ý tưởng của "Grammar of Graphics". ggplot2 cho phép bạn tạo ra các biểu đồ chất lượng cao và tùy chỉnh chúng để hiển thị dữ liệu theo cách bạn mong muốn.

1# Cài thư viện ggplot2
2install.packages("ggplot2")
3
4# Load thư viện ggplot2
5library(ggplot2)

2. Giới thiệu dataset mtcars

Trước khi bắt đầu vẽ biểu đồ, chúng ta sẽ sử dụng dataset mtcars có sẵn trong R. Dataset này chứa thông tin về các xe hơi, bao gồm các biến như mức tiêu thụ nhiên liệu (mpg), số lượng xi-lanh (cyl), công suất (hp), và nhiều biến khác.

1# Xem một số dòng đầu của dataset mtcars
2head(mtcars)

1# Thông tin của dataset mtcars
2help(mtcars)

3. Tạo biểu đồ scatter cơ bản

Chúng ta sẽ bắt đầu bằng việc tạo một biểu đồ scatter plot đơn giản để biểu diễn mối quan hệ giữa mức tiêu thụ nhiên liệu (mpg) và công suất mã lực (hp) của các xe hơi trong dataset.

1# Tạo biểu đồ scatter plot
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point()

Cú pháp rất đơn giản, đầu tiên ta khai báo biểu đồ bằng hàm ggplot() với các thông số về dataset, các trục x và y. Sau đó cộng hàm geom_point() với ngụ ý là vẽ biểu đồ chấm từ thông số đã được khai báo từ hàm ggplot().

4. Tinh chỉnh màu sắc

Bạn có thể tinh chỉnh màu sắc của các điểm trên biểu đồ bằng cách sử dụng tham số color trong hàm aes.

1# Biểu đồ scatter với màu khác
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(color = "steelblue")

5. Layer trong ggplot2, vẽ scatter plot kết hợp với đường hồi quy

Điểm đặc biệt của ggplot2 là ta có thể vẽ chồng cùng lúc các đồ thị lên nhau một các dễ dàng theo cơ chế layer bằng cách dùng dấu +. Hãy thêm một layer đường hồi quy vào biểu đồ scatter plot hiện tại.

Ta sử dụng hàm geom_smooth() với method="lm" là sử dụng phương pháp hồi quy tuyến tính và se=FALSE để không vẽ miền khoảng tin cậy. Ta được kết quả như bên dưới

1# Biểu đồ scatter với màu khác
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(color = "steelblue") +
4  geom_smooth(method = "lm", se = FALSE)

6. Thay đổi màu của các chấm theo phân loại xe

Để thay đổi màu của các chấm dựa trên các nhóm xe hơi, ví dụ ở đây là xe số sàn và xe số tự động với 0 là số tự động và 1 là số sàn bạn có thể khai báo tại hàm aes()

1# Biểu đồ scatter với màu sắc theo nhóm xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(aes(color = factor(am)))

7. Thay đổi kích thước của các chấm theo khối lượng xe

Chúng ta cũng có thể điều chỉnh kích thước của các chấm dựa trên thông tin về khối lượng xe bằng cách sử dụng tham số size.

1# Biểu đồ scatter với kích thước theo khối lượng xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(
4    aes(
5      color = factor(am),
6      size=wt
7    )
8  )

8**. Thay đổi title và label của biểu đồ**

Ta sử dụng hàm labs() để đổi title và label của các trục và các chú thích có trong biểu đồ

1# Biểu đồ scatter với kích thước theo khối lượng xe
2ggplot(data = mtcars, aes(x = mpg, y = hp)) +
3  geom_point(
4    aes(
5      color = factor(am), 
6      size=wt
7    )
8  ) + 
9  geom_smooth(
10    method = "lm", 
11    formula = "y~ x + I(x^2)", 
12    se = FALSE
13  ) + 
14  labs(
15    x = 'Miles/(US) gallon',
16    y = "Gross horsepower",
17    color = "Transmission (0 = automatic, 1 = manual)",
18    size = "Weight (1000 lbs)"
19  ) + 
20  theme_bw()

8. Kết thúc

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng thư viện ggplot2 để trực quan hoá dữ liệu và vẽ biểu đồ trong R. ggplot2 cung cấp nhiều tính năng mạnh mẽ để tùy chỉnh biểu đồ của bạn và biểu diễn dữ liệu một cách trực quan và hiệu quả. Đây chỉ là một phần nhỏ của những gì bạn có thể làm với ggplot2, và bạn có thể tiếp tục khám phá để tạo ra các biểu đồ phức tạp hơn và phù hợp với nhu cầu phân tích của bạn.


Bài viết khác
Trong quá trình phân tích dữ liệu, việc trực quan hóa các dự báo từ mô hình luôn là một thách thức, đặc biệt là khi chúng ta đối mặt với các mô hình có nhiều biến tương tác. Mặc dù visreg hay ggeffects là những công cụ phổ biến, nhưng sự xuất hiện của modelbased trong hệ sinh thái easystats đã mang đến một hướng tiếp cận mới mẻ và mạnh mẽ hơn để xử lý các tương tác phức tạp trong mô hình hồi quy tổng quát. Khởi đầu với hệ sinh thái easystats Gói thư viện modelbased là một thành phần quan trọng của easystats, được thiết kế để đơn giản hóa việc phân tích và trình bày các mô hình thống kê. Để bắt đầu, chúng ta sẽ sử dụng dữ liệu thực tế về độ che phủ của san hô và sự phong phú của các loài cá để minh họa cách gói thư viện này hoạt động.
Trong các bài viết trước, chúng ta đã tìm hiểu cách sử dụng lệnh table thế hệ mới để tạo bảng và các lệnh collect để tùy chỉnh cũng như xuất dữ liệu. Trong bài viết này, tôi sẽ hướng dẫn các bạn cách kết hợp những công cụ này để tạo ra một bảng thống kê mô tả chuyên nghiệp, thường được gọi là Bảng 1 trong các báo cáo khoa học. Mục tiêu của chúng ta là tạo ra một bảng dữ liệu hoàn chỉnh trong tài liệu Microsoft Word với định dạng chuẩn mực. Khởi Tạo Bảng Cơ Bản Đầu tiên, chúng ta sẽ sử dụng bộ dữ liệu NHANES và lệnh table để tạo cấu trúc bảng ban đầu. Tôi sẽ sử dụng tùy chọn nototal để loại bỏ dòng tổng số nhằm giữ cho bảng gọn gàng hơn.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội