Science for Economics.

[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
Cover Image for [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
Khanh Hoang
Khanh Hoang
Ngày viết:
R

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.

Comments:


    Nội dung khác.