Chuyển đến nội dung chính

Hướng dẫn PCH trong R

Trong hướng dẫn này, tìm hiểu về ký tự vẽ (PCH) trong R.
· 5 phút đọc

Khám phá cùng AI

Ký tự vẽ, hay pch, là đối số tiêu chuẩn để đặt ký tự sẽ được vẽ trong một số hàm R.

Bạn có thể thêm phần giải thích vào biểu đồ dưới nhiều dạng khác nhau, bao gồm nhãn trục, tiêu đề, chú giải, hoặc văn bản ngay trên biểu đồ. Các hàm đồ họa cơ bản trong R thường tự tạo nhãn trục theo mặc định, tuy nhiên có thể ghi đè bằng đối số xlab() để cung cấp nhãn trục x của riêng bạn và ylab() để cung cấp nhãn trục y của riêng bạn.

Một số hàm đồ họa cơ bản cũng cung cấp tiêu đề mặc định, nhưng một lần nữa, bạn có thể ghi đè như dưới đây:

library(MASS)
par(mfrow = c(1, 2))
plot(density(geyser$waiting))
plot(density(geyser$waiting), main = "Estimated density: \n Old Faithful waiting times")
Hướng dẫn PCH trong R

Biểu đồ bên trái dùng tiêu đề mặc định do hàm density trả về, cho biết biểu đồ được tạo bởi hàm này với các tùy chọn mặc định và cũng đưa ra đặc tả R cho biến có mật độ chúng ta đang vẽ. Ở biểu đồ bên phải, tiêu đề mặc định này đã bị ghi đè bằng cách chỉ định đối số tùy chọn main. Lưu ý rằng bằng cách chèn ký tự xuống dòng, backslash n, chúng ta tạo tiêu đề hai dòng trong chuỗi ký tự này.

text() Function

Tương tự các hàm lines và points, text là một hàm đồ họa cấp thấp cho phép thêm văn bản giải thích vào biểu đồ hiện có. Để làm điều này, chúng ta phải chỉ định các giá trị x và y, tức tọa độ trên biểu đồ nơi văn bản sẽ xuất hiện, và labels, là một vector ký tự chỉ định văn bản cần thêm.

text(x, y, adj)
Hướng dẫn PCH trong R

Mặc định, văn bản thêm vào biểu đồ sẽ được căn giữa tại các giá trị x chỉ định, nhưng có thể dùng đối số tùy chọn adj để điều chỉnh căn lề.

Lưu ý rằng đối số adj của hàm text() xác định vị trí ngang của văn bản, và có thể nhận mọi giá trị trong khoảng từ 0 (căn trái) đến 1 (căn phải). Thực tế, đối số này còn có thể nhận giá trị ngoài khoảng đó. Cụ thể, đặt giá trị âm khiến văn bản bắt đầu nằm bên phải vị trí x chỉ định. Tương tự, đặt adj lớn hơn 1 sẽ khiến văn bản kết thúc bên trái vị trí x.

library(MASS)
plot(UScereal$fibre)
text(5, 28, "<-- Outliers [left-justified text at (5, 28)]", adj = 0)
text(65, 23, "[Right-justified text at (65, 23)]", adj = 1, col = "red")
text(5, 28, "[Centered text (default) at (31, 18)]", col = "blue")
Hướng dẫn PCH trong R

Phông chữ, hướng và các đặc điểm văn bản khác

Dưới đây là một số cách có thể thay đổi diện mạo văn bản thêm vào thông qua các đối số tùy chọn của hàm text. Mặc định, văn bản được tạo theo phương ngang, nhưng có thể thay đổi bằng đối số srt, tham số hóa góc xoay so với trục hoành.

Tiếp theo, văn bản màu đỏ nghiêng lên trên do đặt srt là giá trị dương 30 độ, trong khi văn bản màu xanh lá nghiêng xuống dưới bằng cách đặt srt bằng -45.

Chúng ta cũng có thể chỉ định màu văn bản với đối số col, và văn bản màu đỏ cho thấy có thể thay đổi cỡ chữ bằng đối số cex. Khi đặt cex = 1.2, chúng ta đã tăng kích thước văn bản lên 20% so với bình thường.

Đặc điểm văn bản khác được điều chỉnh trong ví dụ này là phông chữ, thiết lập bằng đối số font. Giá trị mặc định là font = 1, chỉ văn bản thường, trong khi font = 2 là đậm, font = 3 là nghiêng, và font = 4 là vừa đậm vừa nghiêng.

library(MASS)
plot(Boston$rad)

# "Inner city" with adjusted colour and rotation
text(350, 24, adj = 1, "Inner city? -->", srt = 30, font = 2, cex = 1.2, col = "red")

# "Suburbs" with adjusted colour and rotation
text(100, 15, "Suburbs? -->", srt = -45, font = 3, col = "green")

title("Text with varying orientations, fonts, sizes & colors")
Hướng dẫn PCH trong R

Điều chỉnh vị trí, kích thước và phông chữ của văn bản

Trong ví dụ sau, bạn sẽ:

  • Tạo biểu đồ MPG.city so với Horsepower từ khung dữ liệu Cars93, với dữ liệu hiển thị bằng vòng tròn rỗng (mặc định pch).
  • Tạo biến index3 bằng hàm which() để xác định số hàng chứa tất cả xe 3 xi-lanh.
  • Dùng hàm points() để phủ các vòng tròn đặc, pch = 16, lên tất cả các điểm trong biểu đồ đại diện cho xe 3 xi-lanh.
  • Dùng hàm text() với biến Make như trước để thêm nhãn bên phải các xe 3 xi-lanh, nhưng lần này dùng adj = 0.2 để đẩy nhãn xa hơn về bên phải, dùng đối số cex để tăng kích thước nhãn thêm 20%, và dùng đối số font để đặt nhãn đậm nghiêng.
# Plot MPG.city vs. Horsepower as open circles
plot(Cars93$Horsepower, Cars93$MPG.city)

# Create index3, pointing to 3-cylinder cars
index3 <- which(Cars93$Cylinders == 3)

# Highlight 3-cylinder cars as solid circles
points(Cars93$Horsepower[index3],
       Cars93$MPG.city[index3],
       pch = 16)

# Add car names, offset from points, with larger bold text
text(Cars93$Horsepower[index3],
     Cars93$MPG.city[index3],
     Cars93$Make[index3],
     adj = -0.2, cex = 1.2, font = 4)

Khi chạy đoạn mã trên, bạn sẽ thu được kết quả sau:

Hướng dẫn PCH trong R

Tự mình thử.

Để tìm hiểu thêm về cách thêm văn bản vào biểu đồ, vui lòng xem video từ khóa học Data Visualization in R của chúng tôi.

Nội dung này được trích từ khóa học Data Visualization in R của DataCamp do Ronald Pearson giảng dạy.

Chủ đề

Liên quan