II. Dữ liệu economics
head(economics)
## # A tibble: 6 × 6
## date pce pop psavert uempmed unemploy
## <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1967-07-01 507. 198712 12.6 4.5 2944
## 2 1967-08-01 510. 198911 12.6 4.7 2945
## 3 1967-09-01 516. 199113 11.9 4.6 2958
## 4 1967-10-01 512. 199311 12.9 4.9 3143
## 5 1967-11-01 517. 199498 12.8 4.7 3066
## 6 1967-12-01 525. 199657 11.8 4.8 3018
economics là dataset về thu nhập của người Mỹ mẫu đi
kèm ggplot2.
- Những thứ cần quan tâm trong dataset:
date: ngày (kiểu Date)
psavert: tỷ lệ tiết kiệm cá nhân (đơn vị:
%)
III. Lọc dữ liệu từ 1965 đến 2015
eco_65_15 <- economics %>%
filter(
date >= as.Date("1965-01-01"),
date <= as.Date("2015-12-31")
)
range(eco_65_15$date)
## [1] "1967-07-01" "2015-04-01"
summary(eco_65_15$psavert)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.200 6.400 8.400 8.567 11.100 17.300
as.Date("YYYY-MM-DD"): biến chuỗi thành kiểu
Date.
filter(...): chỉ giữ những dòng thỏa điều kiện.
%>% (pipe): đọc như “lấy dữ liệu bên trái
đưa vào hàm bên phải”.
IV. Vẽ biểu đồ
4.1 Khởi tạo khung biểu đồ + mapping (aes)
p <- ggplot(eco_65_15, aes(x = date, y = psavert))
p

Giải thích
ggplot(data, aes(...)) tạo “khung” cho biểu đồ.
aes(x = ..., y = ...) là ánh xạ: cột
nào lên trục X/Y.
- Chưa có
geom_* nên lúc này plot sẽ “trống” hoặc chưa có
hình.
4.2 Thêm đường (geom_line)
p <- p +
geom_line(
color = "#90DBF4",
linewidth = 0.7,
alpha = 0.9
)
p

geom_line() vẽ đường nối các điểm theo thời
gian.
color: màu đường.
linewidth: độ dày nét (tương tự “size” nhưng dùng cho
line mới).
alpha: độ trong suốt (0 = trong suốt, 1 = rõ
nhất).
4.3 Chỉnh trục X (ngày) hiển thị theo năm
p <- p +
scale_x_date(
date_breaks = "5 years",
labels = scales::date_format("%Y")
)
p

scale_x_date() áp dụng khi trục X là
Date.
date_breaks = "5 years": mỗi 5 năm đặt 1 tick
(mốc).
labels = date_format("%Y"): chỉ hiện
năm (ví dụ 1970, 1975…).
4.4 Chỉnh trục Y hiển thị dạng phần trăm
p <- p +
scale_y_continuous(
labels = percent_format(scale = 1)
)
p

scale_y_continuous() chỉnh trục Y (giá trị liên
tục).
percent_format(scale = 1):
- vì
psavert đã là “8.5” nghĩa là
8.5%
- nên
scale = 1 để giữ nguyên (không nhân 100 thêm lần
nữa).
4.5 Thêm tiêu đề, nhãn trục, chú thích nguồn
p <- p +
labs(
title = "Tỷ lệ tiết kiệm cá nhân của người dân Mỹ (1965–2015)",
x = "Năm",
y = "Tỷ lệ tiết kiệm (%)",
caption = "Nguồn: FRED (ggplot2 economics dataset)"
)
p

title: tiêu đề biểu đồ
x, y: nhãn trục
caption: dòng chú thích nhỏ phía dưới (thường để ghi
nguồn)
4.6 Chọn theme và tinh chỉnh một vài chi tiết
p <- p +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14),
axis.title = element_text(face = "bold"),
panel.grid.minor = element_blank()
)
p

theme_minimal() tạo phong cách tối giản, sạch sẽ.
base_size: cỡ chữ cơ bản.
plot.title: làm tiêu đề đậm và to hơn.
axis.title: làm nhãn trục đậm.
panel.grid.minor = element_blank(): ẩn lưới phụ để đỡ
rối.
V. Bản code hoàn chỉnh (gộp lại)
eco_65_15 <- economics %>%
filter(
date >= as.Date("1965-01-01"),
date <= as.Date("2015-12-31")
)
ggplot(eco_65_15, aes(x = date, y = psavert)) +
geom_line(
color = "#90DBF4",
linewidth = 0.7,
alpha = 0.9
) +
scale_x_date(
date_breaks = "5 years",
labels = scales::date_format("%Y")
) +
scale_y_continuous(
labels = percent_format(scale = 1)
) +
labs(
title = "Tỷ lệ tiết kiệm cá nhân của người dân Mỹ (1965–2015)",
x = "Năm",
y = "Tỷ lệ tiết kiệm (%)",
caption = "Nguồn: FRED (ggplot2 economics dataset)"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14),
axis.title = element_text(face = "bold"),
panel.grid.minor = element_blank()
)
