Biểu đồ hộp (Box plot)
Một cách đơn giản để so sánh nhiều phân phối là dùng biểu đồ hộp. Đoạn mã này sẽ giúp bạn dựng nhiều biểu đồ hộp để có một hình trực quan gọn gàng.
Trong bài này, đối tượng all_book_polarity đã được nạp sẵn. Data frame này có hai cột, book và polarity. Nó bao gồm tất cả các cuốn sách đã được áp dụng hàm polarity() của qdap. Dưới đây là 3 dòng đầu của đối tượng lớn này.
| book | polarity | |
|---|---|---|
| 14 | huck | 0.2773501 |
| 22 | huck | 0.2581989 |
| 26 | huck | -0.5773503 |
Bài này giới thiệu tapply() cho phép bạn áp dụng hàm trên một mảng “rổ rá”. Bạn truyền vào một vector giá trị rồi đến một vector nhân tố (factor). Với mỗi tổ hợp nhân tố–giá trị, tham số thứ ba là một hàm như min() sẽ được áp dụng. Ví dụ, đây là đoạn mã dùng tapply() trên hai vector.
f1 <- as.factor(c("Group1", "Group2", "Group1", "Group2"))
stat1 <- c(1, 2, 1, 2)
tapply(stat1, f1, sum)
Kết quả là một mảng trong đó Group1 có giá trị 2 (1+1) và Group2 có giá trị 4 (2+2).
Bài tập này là một phần của khóa học
Phân tích cảm xúc trong R
Hướng dẫn bài tập
- Vì đã được nạp sẵn, hãy khám phá
all_book_polarityvớistr(). - Dùng
tapply(), truyền vàoall_book_polarity$polarity,all_book_polarity$bookvà hàmsummary(). Việc này sẽ in thống kê tóm tắt cho 4 cuốn sách theo điểmpolarity()của chúng. Bạn có thể kỳ vọng Oz và Huck Finn có trung bình cao hơn Agamemnon hoặc Moby Dick. Hãy chú ý đặc biệt đến trung vị (median). - Tạo biểu đồ hộp bằng
ggplot()bằng cách truyền vàoall_book_polarity.- Thiết lập thẩm mỹ
aes(x = book, y = polarity). - Dùng dấu
+để thêmgeom_boxplot()vớicol = "darkred". Hãy chú ý đường đậm ở giữa mỗi hộp biểu diễn trung vị. - Tiếp theo thêm một lớp nữa là
geom_jitter()để bổ sung các điểm cho từng từ.
- Thiết lập thẩm mỹ
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Examine
___
# Summary by document
___
# Box plot
ggplot(___, aes(x = ___, y = ___)) +
___(fill = c("#bada55", "#F00B42", "#F001ED", "#BA6E15"), col = "___") +
___(position = position_jitter(width = 0.1, height = 0), alpha = 0.02) +
theme_gdocs() +
ggtitle("Book Polarity")