messenger_logo
Liên hệ qua Messenger
SciEco

Hướng dẫn phân tích và trực quan hóa dữ liệu cầu thủ nba bằng r với hoopr và ggplot2

I
IEFPA
Ngày viết: 26/08/2026

Phân tích số liệu thể thao hiện đại, đặc biệt là giải bóng rổ nhà nghề Mỹ NBA, là một trong những mảng ứng dụng trực quan và cuốn hút nhất của khoa học dữ liệu. Thay vì phải tải về các tệp tin bảng tính thủ công hoặc tự viết các bộ cào dữ liệu phức tạp, hệ sinh thái ngôn ngữ R cung cấp cho người dùng những công cụ mạnh mẽ để kết nối trực tiếp với nguồn dữ liệu thể thao uy tín. Chỉ với vài dòng mã lệnh đơn giản kết hợp giữa gói hoopR và bộ công cụ tidyverse, bạn hoàn toàn có thể trích xuất các thông số thi đấu chi tiết từ ESPN và tạo ra biểu đồ xếp hạng cầu thủ chuyên nghiệp.

Thiết lập môi trường và tải dữ liệu từ hoopR

Gói hoopR là cầu nối dữ liệu chuyên dụng, cho phép tải toàn bộ thông tin chi tiết từng trận đấu của giải đấu một cách nhanh chóng. Để bắt đầu, chúng ta cần nạp hai thư viện nền tảng là tidyverse phục vụ cho việc xử lý cấu trúc dữ liệu và hoopR để lấy thông số cầu thủ cho mùa giải gần nhất.

Hàm load_nba_player_box sẽ tải toàn bộ bảng thống kê cá nhân của từng lượt trận trong mùa giải 2023–2024.

1library(tidyverse)
2library(hoopR)
3nba_data <- hoopR::load_nba_player_box(seasons = 2024)

Xử lý và tính toán điểm số trung bình

Dữ liệu thô ban đầu chứa rất nhiều biến số và các dòng ghi nhận những cầu thủ không ra sân thi đấu. Để tìm ra mười cây ghi điểm xuất sắc nhất mùa giải, quy trình tiền xử lý đòi hỏi chúng ta phải lọc bỏ các trường hợp vắng mặt, gom nhóm dữ liệu theo từng cầu thủ cùng câu lạc bộ chủ quản, sau đó tính toán số trận ra sân và điểm số trung bình mỗi trận.

Đồng thời, để đảm bảo tính đại diện thống kê và loại bỏ những trường hợp mẫu nhỏ do thi đấu quá ít trận, tiêu chí lọc tối thiểu 30 trận được áp dụng trước khi sắp xếp và lấy ra 10 vị trí dẫn đầu.

1top_scorers <- nba_data %>%
2  filter(is.na(did_not_play) | did_not_play == FALSE | did_not_play == "FALSE") %>%
3  group_by(athlete_display_name, team_abbreviation) %>%
4  summarise(
5    games_played = n(),
6    avg_points = mean(points, na.rm = TRUE),
7    .groups = "drop"
8  ) %>%
9  filter(games_played >= 30) %>%
10  arrange(desc(avg_points)) %>%
11  slice_head(n = 10)

Xây dựng biểu đồ xếp hạng bằng ggplot2

Sau khi đã có bảng tổng hợp mười cầu thủ dẫn đầu, bước tiếp theo là chuyển đổi các con số thành biểu đồ cột nằm ngang trực quan bằng ggplot2. Việc đảo trục tọa độ giúp tên cầu thủ hiển thị rõ ràng, dễ đọc hơn so với dạng cột dọc truyền thống.

Các tham số đồ họa như nhãn giá trị điểm số được làm tròn một chữ số thập phân, khoảng đệm trục tọa độ và chủ đề tối giản giúp biểu đồ đạt tiêu chuẩn thẩm mỹ cao, phù hợp để xuất bản hoặc đưa vào báo cáo phân tích.

1ggplot(top_scorers, aes(
2  x = reorder(athlete_display_name, avg_points),
3  y = avg_points,
4  fill = team_abbreviation
5)) +
6  geom_col(fill = "steelblue") +
7  geom_text(aes(label = round(avg_points, 1)), hjust = -0.2, size = 4, color = "black") +
8  coord_flip() +
9  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
10  labs(
11    title = "Top 10 NBA Scorers (2023–24)",
12    x = "Player",
13    y = "Avg Points per Game"
14  ) +
15  theme_minimal(base_size = 14) +
16  theme(
17    plot.title = element_text(face = "bold", hjust = 0.5, size = 16),
18    axis.title = element_text(face = "bold"),
19    axis.text = element_text(size = 12),
20    axis.text.x = element_text(size = 10),
21    legend.position = "none"
22  )

Mở rộng không gian phân tích sang các chỉ số khác

Quy trình làm việc trên không chỉ giới hạn ở chỉ số ghi điểm mà còn có thể tùy biến linh hoạt cho nhiều khía cạnh chiến thuật khác nhau.

Bạn có thể dễ dàng thay đổi điều kiện phân tích theo các hướng:

Thay đổi ngưỡng số trận thi đấu

Điều chỉnh điều kiện lọc số trận tối thiểu để đánh giá độ ổn định của cầu thủ xuyên suốt mùa giải hoặc xem xét các mẫu nhỏ hơn cho các tân binh.

Phân tích chuỗi thời gian qua nhiều mùa giải

Thay đổi tham số mùa giải để so sánh hiệu suất thi đấu của các siêu sao qua từng năm khác nhau.

Đánh giá các chỉ số chuyên môn đa dạng

Thay thế biến điểm số bằng số lần kiến tạo, số lần bắt bóng bật bảng hoặc các thông số phòng ngự để có cái nhìn toàn diện về đóng góp của từng vị trí trên sân.

✨ Sự kết hợp giữa hoopR và ggplot2 mang lại một quy trình phân tích dữ liệu thể thao khép kín, từ khâu thu thập tự động, làm sạch theo chuẩn dữ liệu gọn gàng cho đến trực quan hóa chuyên sâu mà không cần rời khỏi môi trường R.

Thử thách ứng dụng dành cho bạn

Hãy áp dụng quy trình trên để tạo một biểu đồ thanh ngang hiển thị 10 cầu thủ có số lần kiến tạo trung bình mỗi trận cao nhất trong mùa giải 2023–2024 với điều kiện thi đấu tối thiểu 40 trận. Bạn sẽ cần thay đổi biến số nào trong hàm tính toán tổng hợp?


Bài viết khác
Trong thế giới dữ liệu địa không gian, việc tạo ra bản đồ dự đoán từ các điểm quan sát là một thao tác phổ biến và ngày càng dễ dàng nhờ sự phong phú của các công cụ trong R. Tuy nhiên, điều gì khiến một bản đồ “đẹp” thật sự đáng tin cậy? Chìa khóa nằm ở việc hiểu rõ ranh giới của dữ liệu, công cụ và đặc điểm của mô hình – thay vì chỉ dừng lại ở vẻ đẹp hình ảnh bên ngoài. Trong buổi thuyết trình tại nhóm người dùng R Rome (ngày 27 tháng 11 năm 2025), Jakub Nowosad đã trình bày một quy trình thực hành hiệu quả để xây dựng và đánh giá các bản đồ dự đoán không gian, sử dụng dữ liệu về đa dạng loài thực vật ở Nam Mỹ làm ví dụ. Qua đó, ông nhấn mạnh rằng: tạo bản đồ không phải là kết thúc, mà là bước khởi đầu cho một quá trình suy luận cẩn trọng. Từ điểm quan sát đến bề mặt dự đoán: Những phương pháp phổ biến Việc chuyển đổi từ tập hợp điểm dữ liệu (chẳng hạn như địa điểm ghi nhận loài thực vật) thành bản đồ liên tục – nơi mỗi vị trí trên bản đồ đều có một giá trị dự đoán – là một bài toán tiêu biểu trong phân tích không gian. Các phương pháp được ứng dụng bao gồm:
Những bước tiến gần đây trong mô hình hóa chuỗi thời gian đã nhấn mạnh tầm quan trọng của các điểm gãy cấu trúc, tức những thay đổi đột ngột trong động thái cốt lõi của dữ liệu tài chính hoặc kinh tế tế vi mô. Thị trường tiền mã hóa, đặc biệt là Bitcoin, thường xuyên trải qua các cú sốc lớn dẫn đến sự thay đổi trạng thái rủi ro. Việc tiếp cận thị trường dưới góc nhìn dữ liệu thành phần kết hợp phát hiện điểm gãy giúp lượng hóa các giai đoạn biến động một cách chuẩn xác và liền mạch hơn. Bản Chất Của Điểm Gãy Cấu Trúc Trong Dữ Liệu Tài Chính Khi phân tích chuỗi thời gian, một cú sốc từ thị trường có thể làm thay đổi hoàn toàn phân phối của các chỉ số tài chính. Cách tiếp cận theo khung suy diễn Bayes giúp nắm bắt những bước chuyển dịch này thông qua ba tham số có khả năng diễn giải cao: Hướng dịch chuyển: Xác định thành phần nào trong cấu trúc tổng thể có xu hướng tăng hoặc giảm sau khi xuất hiện điểm gãy.
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