Logo
Le Phuc HaiPHD RESEARCHER & FOUNDER
Data Analysis

R101 - Bài 3: Vẽ Hình Nghệ Thuật Với ggplot2 - Đừng Làm Xấu Mặt Excel Nữa

Nếu data là nguyên liệu, thì biểu đồ (Chart) là món ăn. Excel nấu món này chín nhưng trình bày... xấu. ggplot2 của R là nhà hàng Michelin 3 sao về khoản trình bày.

12 min read
R101 - Bài 3: Vẽ Hình Nghệ Thuật Với ggplot2 - Đừng Làm Xấu Mặt Excel Nữa

Có một câu nói rất hay: "A picture is worth a thousand numbers".

Business Insight: Sếp của bạn (C-level) cực kỳ bận. Họ không có thời gian soi từng con số. Một biểu đồ tốt phải giúp họ nắm bắt "đại ý" trong vòng 3 giây. Nếu cần > 5 giây để hiểu, biểu đồ đó thất bại. Đây gọi là nguyên tắc "Giảm tải nhận thức" (Cognitive Load Reduction).

Excel thường vi phạm điều này với mấy cái hiệu ứng 3D, bóng đổ (Shadow) lòe loẹt làm rối mắt. `ggplot2` của R đi theo tư duy tối giản (Minimalism) của Edward Tufte - Tối đa hóa Tỷ lệ Dữ liệu-Mực in (Data-Ink Ratio).

Tư duy "Grammar of Graphics"

`gg` viết tắt của Grammar of Graphics (Ngữ pháp đồ họa). Vẽ hình trong R giống như xếp hình Lego, bạn xếp từng lớp (Layer) lên nhau:
1. Data: Nền móng (Dữ liệu của bạn)
2. Aesthetics (aes): Trục X là gì? Trục Y là gì? Màu sắc theo cột nào?
3. Geometries (geom): Vẽ cái gì? (Cột, đường, chấm...)

Công thức thần thánh:
`ggplot(data, aes(x=..., y=...)) + geom_...()`

ggplot2 Layers Infographic
lehai.edu.vn

Tư duy xếp hình Lego của ggplot2: Cứ xếp chồng từng lớp lên là thành tác phẩm.

Thực hành 1: Biểu đồ cột (Bar Chart)

Muốn so sánh Thu nhập trung bình giữa Nam và Nữ?

`ggplot(df, aes(x = Gender, y = Income, fill = Gender)) + geom_col()`

Nó vẽ ra ngay. Nhưng chưa đẹp. Muốn đẹp thì thêm gia vị (theme) vào:

`ggplot(df, aes(x = Gender, y = Income, fill = Gender)) +`
` geom_col() +`
` theme_minimal() +` (Giao diện tối giản)
` labs(title = "Thu nhập theo giới tính", x = "", y = "VND")`

Bùm! Trông sang hơn hẳn chưa?

Thực hành 2: Biểu đồ phân tán (Scatter Plot)

Muốn xem Tuổi càng cao thì Thu nhập càng cao hay thấp?

`ggplot(df, aes(x = Age, y = Income)) +`
` geom_point() +` (Vẽ các chấm điểm)
` geom_smooth(method = "lm")` (Vẽ thêm đường xu hướng)

Bạn sẽ thấy ngay một đường thẳng đi lên (hoặc đi xuống). Excel vẽ cái này mất cả buổi, R vẽ mất 1 dòng code.

Kết luận: Đừng vẽ hình 3D lòe loẹt nữa. Hãy vẽ đơn giản nhưng tinh tế. Đó là đẳng cấp.

Tags

#Quantitative#R101#Data Visualization#ggplot2#Góc nhìn HaiLP

About HaiLP

Sharing practical insights on RTM, DMS and Academic Research.