1. Giới thiệu chung về Scatter Plot

Scatter plot, còn được gọi là biểu đồ tán xạ, là một trong những công cụ trực quan quan trọng nhất trong thống kê và khoa học dữ liệu. Nó cho phép người dùng hiển thị mối quan hệ giữa hai biến số liên tục bằng cách đặt các điểm dữ liệu lên một hệ tọa độ hai chiều. Khi các điểm được vẽ, chúng sẽ tạo ra các mẫu hình, xu hướng hoặc cụm dữ liệu giúp chúng ta nhận diện mối liên hệ (có thể là tuyến tính, phi tuyến, hoặc không có mối quan hệ) một cách trực quan.

1.1. Lý do sử dụng scatter plot

  • Phát hiện mối quan hệ: Giúp nhận biết nhanh chóng liệu hai biến có quan hệ tuyến tính, phi tuyến, hoặc không có quan hệ.
  • Xác định ngoại lệ (outlier): Những điểm nằm cách xa cụm dữ liệu chính có thể là ngoại lệ, cần được kiểm tra thêm.
  • So sánh nhóm: Khi gán màu hoặc hình dạng khác nhau cho các nhóm dữ liệu, chúng ta có thể so sánh trực quan sự phân bố của các nhóm.
  • Kiểm tra giả thuyết: Trước khi thực hiện các phân tích thống kê phức tạp hơn (như hồi quy), scatter plot cung cấp một cái nhìn sơ bộ về tính hợp lý của mô hình.

1.2. Các thành phần cơ bản của scatter plot

Thành phần Mô tả
Trục hoành (X) Đại diện cho biến độc lập (predictor) hoặc bất kỳ biến nào bạn muốn đặt trên trục ngang.
Trục tung (Y) Đại diện cho biến phụ thuộc (response) hoặc biến bạn muốn quan sát trên trục dọc.
Các điểm dữ liệu Mỗi điểm biểu thị một cặp giá trị (x, y).
Nhãn trục Ghi rõ tên biến và đơn vị đo lường.
Tiêu đề Tóm tắt nội dung hoặc mục tiêu của biểu đồ.
Legend (chú giải) Khi có nhiều nhóm hoặc thuộc tính màu sắc, hình dạng, legend giúp giải thích.
Đường xu hướng (trend line) Đôi khi được thêm vào để minh họa xu hướng chung.
Lưới (grid) Giúp định vị giá trị các điểm trên trục.

2. Chuẩn bị dữ liệu trước khi vẽ

Scatter Plot Cách Vẽ
Scatter Plot Cách Vẽ

2.1. Thu thập và làm sạch dữ liệu

Trước khi tạo scatter plot, dữ liệu cần được:

  1. Thu thập đầy đủ: Đảm bảo rằng mỗi bản ghi có giá trị cho cả hai biến cần vẽ.
  2. Xử lý missing value: Loại bỏ hoặc thay thế các giá trị thiếu (NaN). Các phương pháp phổ biến:
  3. Loại bỏ bản ghi thiếu (dropna).
  4. Thay thế bằng trung bình, median hoặc giá trị ước lượng.
  5. Kiểm tra outlier: Dùng các phương pháp như IQR, Z-score để xác định và quyết định giữ hay loại bỏ.
  6. Chuẩn hoá (normalize) hoặc chuẩn hoá (standardize): Khi các biến có đơn vị hoặc phạm vi khác nhau, việc chuẩn hoá giúp biểu đồ dễ nhìn hơn.

2.2. Định dạng dữ liệu cho các công cụ vẽ

  • CSV/Excel: Định dạng bảng, mỗi cột là một biến.
  • Dataframe (pandas): Thông dụng trong Python.
  • DataTable (R): Đối với R.
  • JSON: Khi dữ liệu được truyền qua API.

3. Cách vẽ scatter plot bằng các công cụ phổ biến

3.1. Vẽ scatter plot bằng Excel

Excel là công cụ phổ biến nhất cho người không chuyên.

Bước 1: Chuẩn bị dữ liệu

A (X) B (Y)
1.2 3.4
2.5 4.1
… …

Bước 2: Chọn dữ liệu

  • Bôi đen toàn bộ cột X và Y.
  • Vào Insert → Scatter (X, Y) Chart → Chọn dạng “Scatter with only Markers”.

Bước 3: Tùy chỉnh biểu đồ

  • Thêm tiêu đề: Click vào “Chart Title” → Nhập tiêu đề.
  • Thêm nhãn trục: “Chart Elements” → “Axis Titles”.
  • Thêm trend line: Click vào một điểm dữ liệu → “Add Trendline” → Chọn Linear, Polynomial, … và hiển thị phương trình.
  • Thay đổi màu, kích thước điểm: “Format Data Series”.

Bước 4: Lưu và chia sẻ

  • Click chuột phải → “Save as Picture” để xuất hình ảnh.
  • Hoặc copy vào PowerPoint, Word.

3.2. Vẽ scatter plot bằng Python (matplotlib & seaborn)

Scatter Plot Cách Vẽ
Scatter Plot Cách Vẽ

Python cung cấp khả năng tùy biến mạnh mẽ.

3.2.1. Sử dụng matplotlib

import matplotlib.pyplot as plt
import pandas as pd # Đọc dữ liệu
df = pd.read_csv('data.csv') # file có cột X và Y # Vẽ scatter plot
plt.figure(figsize=(8,6))
plt.scatter(df'X', df'Y', c='blue', alpha=0.6, edgecolors='w', s=80) # Thêm tiêu đề và nhãn trục
plt.title('Scatter Plot: X vs Y', fontsize=16)
plt.xlabel('Biến X', fontsize=14)
plt.ylabel('Biến Y', fontsize=14) # Thêm lưới
plt.grid(True, linestyle='--', alpha=0.5) # Thêm trend line (linear)
z = np.polyfit(df'X', df'Y', 1)
p = np.poly1d(z)
plt.plot(df'X', p(df'X'), "r--", linewidth=2, label='Trend line') plt.legend()
plt.show()

3.2.2. Sử dụng seaborn (đơn giản hơn)

import seaborn as sns
import matplotlib.pyplot as plt sns.set(style="whitegrid")
plt.figure(figsize=(9,7)) # Scatter plot với hue (màu) cho một biến phân loại
sns.scatterplot(data=df, x='X', y='Y', hue='Category', palette='deep', s=100, alpha=0.8, edgecolor='black') # Thêm đường hồi quy (regression line)
sns.regplot(data=df, x='X', y='Y', scatter=False, color='red', line_kws={'linestyle':'--'}) plt.title('Scatter Plot với Seaborn', fontsize=18)
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(title='Nhóm')
plt.show()

Lưu ý:
– hue giúp phân biệt các nhóm bằng màu sắc.
– size hoặc style có thể dùng để biểu diễn thêm biến thứ ba.

3.3. Vẽ scatter plot bằng R (ggplot2)

R là ngôn ngữ thống kê mạnh mẽ, ggplot2 cung cấp cú pháp “Grammar of Graphics”.

# Cài đặt gói nếu chưa có
install.packages("ggplot2")
library(ggplot2) # Đọc dữ liệu
df <- read.csv("data.csv") # Scatter plot cơ bản
ggplot(df, aes(x = X, y = Y)) + geom_point(color = "steelblue", size = 3, alpha = 0.7) + labs(title = "Scatter Plot: X vs Y", x = "Biến X", y = "Biến Y") + theme_minimal() # Thêm màu cho nhóm và đường hồi quy
ggplot(df, aes(x = X, y = Y, color = Category)) + geom_point(size = 4, alpha = 0.8) + geom_smooth(method = "lm", se = FALSE, linetype = "dashed") + labs(title = "Scatter Plot với Nhóm và Trend Line", x = "X", y = "Y") + theme_bw()

3.4. Vẽ scatter plot bằng Google Sheets

Google Sheets cung cấp công cụ vẽ nhanh, phù hợp cho cộng tác trực tuyến.

  1. Nhập dữ liệu vào bảng tính.
  2. Chọn dữ liệu → Insert → Chart.
  3. Trong Chart editor, chọn Chart type → “Scatter chart”.
  4. Tùy chỉnh Chart style, Series, Axis titles.
  5. Nhấn Insert → Biểu đồ sẽ xuất hiện trong sheet, có thể kéo thả hoặc chia sẻ.

3.5. Vẽ scatter plot bằng Power BI

Power BI cho phép tạo biểu đồ tương tác.

  1. Import dữ liệu (Excel, CSV, SQL…).
  2. Trên Report view, kéo visual “Scatter chart”.
  3. Gán X Axis, Y Axis, Details (để phân biệt điểm), Legend (màu).
  4. Tùy chỉnh Data colors, Title, Analytics (thêm trend line, constant line).

4. Các kỹ thuật nâng cao cho scatter plot

4.1. Đánh dấu nhóm bằng màu, kích thước, hình dạng

Scatter Plot Cách Vẽ
Scatter Plot Cách Vẽ
  • Màu (color): Thể hiện biến phân loại (categorical).
  • Kích thước (size): Thể hiện biến định lượng thứ ba (ví dụ: thu nhập).
  • Hình dạng (shape / marker): Thêm một biến phân loại nữa.

Ví dụ trong Python (seaborn):

sns.scatterplot(data=df, x='X', y='Y', hue='Category', size='Income', style='Region', palette='viridis')

4.2. Thêm đường xu hướng (trend line) và phương trình

  • Linear regression: sns.regplot hoặc plt.plot với np.polyfit.
  • Polynomial regression: np.polyfit(x, y, deg=2) để vẽ đường cong bậc 2.
  • Loess (locally weighted scatterplot smoothing): Dùng statsmodels.nonparametric.lowess.
import statsmodels.api as sm
lowess = sm.nonparametric.lowess(df'Y', df'X', frac=0.3)
plt.plot(lowess:,0, lowess:,1, color='green', linewidth=2, label='Loess')

4.3. Vẽ các vùng confidence interval (độ tin cậy)

Khi thêm đường hồi quy, ta có thể hiển thị khoảng tin cậy 95%:

sns.regplot(data=df, x='X', y='Y', ci=95, scatter=False, color='red')

4.4. Xử lý dữ liệu lớn (big data)

Khi số điểm lên hàng trăm ngàn, việc vẽ trực tiếp có thể chậm.

  • Sampling: Lấy mẫu ngẫu nhiên 10% dữ liệu.
  • Hexbin plot: Thay thế scatter bằng hexbin để hiển thị mật độ.
plt.hexbin(df'X', df'Y', gridsize=50, cmap='Blues')
plt.colorbar(label='Count')
  • Datashader (Python) cho phép vẽ hàng triệu điểm mà không mất hiệu năng.
import datashader as ds
import datashader.transfer_functions as tf
cvs = ds.Canvas(plot_width=800, plot_height=600)
agg = cvs.points(df, 'X', 'Y')
img = tf.shade(agg, cmap=tf.cm'viridis')
tf.set_background(img, "white")

4.5. Tương tác (interactive) với Plotly

Plotly cho phép người dùng hover để xem chi tiết, zoom, lọc.

import plotly.express as px fig = px.scatter(df, x='X', y='Y', color='Category', size='Income', hover_data='ID', 'Date')
fig.update_traces(marker=dict(opacity=0.7, line=dict(width=0.5, color='DarkSlateGrey')))
fig.update_layout(title='Interactive Scatter Plot')
fig.show()

5. Khi nào không nên dùng scatter plot?

Scatter Plot Cách Vẽ
Scatter Plot Cách Vẽ
  • Biến số không liên tục: Nếu một trong hai biến là danh mục (categorical) mà không có thứ tự, nên dùng bar chart hoặc boxplot.
  • Quá nhiều điểm: Khi dữ liệu quá dày đặc, scatter plot sẽ trở nên chồng chập, khó đọc. Nên dùng heatmap, hexbin hoặc giảm mẫu.
  • Không có mối quan hệ: Nếu mục tiêu là so sánh tần suất hoặc tỉ lệ, biểu đồ cột có thể phù hợp hơn.

6. Các lỗi thường gặp và cách khắc phục

Lỗi Nguyên nhân Cách khắc phục
Các điểm chồng lên nhau Dữ liệu quá dày đặc hoặc trùng lặp Thêm jitter (độ lệch ngẫu nhiên), giảm độ trong suốt (alpha), dùng hexbin
Trục không hiển thị giá trị đầy đủ Đặt giới hạn trục quá chặt Sử dụng plt.xlim, plt.ylim hoặc để auto-scale
Legend quá dài Quá nhiều nhóm màu Gộp lại, hoặc sử dụng interactive legend (Plotly)
Đường xu hướng không hợp lý Dòng dữ liệu phi tuyến Thử polynomial, loess hoặc chuyển sang mô hình phi tuyến
Điểm dữ liệu không hiển thị Kích thước điểm quá nhỏ hoặc màu nền trùng Tăng s (size), thay đổi màu, thêm viền (edgecolor)

7. Ứng dụng thực tế của scatter plot

7.1. Kinh doanh

  • Phân tích doanh thu vs chi phí quảng cáo: Giúp xác định mức chi phí tối ưu.
  • Customer segmentation: Vẽ điểm dựa trên RFM (Recency, Frequency, Monetary) để phân nhóm khách hàng.

7.2. Y tế

  • Liên quan giữa huyết áp và tuổi: Phát hiện xu hướng tăng huyết áp theo độ tuổi.
  • Đánh giá hiệu quả thuốc: So sánh liều lượng và phản ứng sinh học.

7.3. Khoa học môi trường

Scatter Plot Cách Vẽ
Scatter Plot Cách Vẽ
  • Nhiệt độ vs CO₂: Kiểm tra mối quan hệ giữa nhiệt độ trung bình và nồng độ CO₂.
  • Độ ẩm vs lượng mưa: Xác định mô hình dự báo thời tiết.

7.4. Machine Learning

  • Kiểm tra residuals: Sau khi tạo mô hình hồi quy, vẽ residuals (sai số) để kiểm tra tính ngẫu nhiên.
  • Feature engineering: Xem mối quan hệ giữa các feature để quyết định loại bỏ hoặc tạo interaction terms.

8. Tổng kết

Scatter plot là công cụ trực quan mạnh mẽ, đơn giản nhưng mang lại nhiều thông tin quan trọng về mối quan hệ giữa hai biến. Để vẽ một scatter plot hiệu quả, chúng ta cần:

  1. Chuẩn bị dữ liệu sạch: Xử lý missing value, outlier, chuẩn hoá nếu cần.
  2. Lựa chọn công cụ phù hợp: Excel cho người không chuyên, Python/R cho phân tích sâu, Plotly cho tương tác, Power BI/Sheets cho báo cáo nhanh.
  3. Tùy chỉnh biểu đồ: Thêm tiêu đề, nhãn trục, legend, trend line, confidence interval.
  4. Áp dụng kỹ thuật nâng cao: Màu, kích thước, hình dạng, hexbin, datashader, jitter để xử lý dữ liệu lớn hoặc nhiều biến.
  5. Kiểm tra lại: Đảm bảo không có lỗi hiển thị, tránh quá tải thông tin.

Bằng cách nắm vững các bước và kỹ thuật trên, bạn sẽ tạo ra các scatter plot không chỉ đẹp mắt mà còn truyền tải thông tin một cách chính xác, hỗ trợ quyết định dữ liệu trong mọi lĩnh vực. Hãy thực hành ngay với dữ liệu thực tế của mình và khám phá những câu chuyện mà các điểm dữ liệu đang muốn kể!

Rate this post
Mục nhập này đã được đăng trong Blog. Đánh dấu trang permalink.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *