boxplot () trong R: Cách tạo BoxPlots Tìm hiểu với ví dụ

Bạn có thể sử dụng đối tượng hình học geom_boxplot () từ thư viện ggplot2 để vẽ boxplot () trong R. Boxplots () trong R giúp trực quan hóa việc phân phối dữ liệu theo phần tư và phát hiện sự hiện diện của các điểm ngoại lệ.

Chúng tôi sẽ sử dụng tập dữ liệu chất lượng không khí để giới thiệu boxplot () trong R với ggplot. Tập dữ liệu này đo lường chất lượng không khí của New York từ tháng 5 đến tháng 9 năm 1973. Tập dữ liệu chứa 154 quan sát. Chúng tôi sẽ sử dụng các biến sau:

  • Ozone: Biến số
  • Gió: Biến số
  • Tháng: Tháng Năm đến Tháng Chín. Biến số

Trong hướng dẫn này, bạn sẽ học

Tạo ô hộp

Trước khi bắt đầu tạo boxplot () đầu tiên trong R, bạn cần thao tác dữ liệu như sau:

  • Bước 1: Nhập dữ liệu
  • Bước 2: Bỏ các biến không cần thiết
  • Bước 3: Chuyển đổi Tháng theo cấp độ hệ số
  • Bước 4: Tạo một biến phân loại mới chia tháng với ba cấp độ: bắt đầu, giữa và cuối.
  • Bước 5: Loại bỏ các quan sát bị thiếu

Tất cả các bước này được thực hiện với dplyr và nhà điều hành đường ống%>%.

 library(dplyr) library(ggplot2) # Step 1 data_air % #Step 2 select(-c(Solar.R, Temp)) % > % #Step 3 mutate(Month = factor(Month, order = TRUE, labels = c('May', 'June', 'July', 'August', 'September')), #Step 4 day_cat = factor(ifelse(Day <10, 'Begin', ifelse(Day < 20, 'Middle', 'End')))) 

Một phương pháp hay là kiểm tra cấu trúc của dữ liệu bằng hàm gluxit ().

glimpse(data_air)

Đầu ra:

 ## Observations: 153 ## Variables: 5 ## $ Ozone 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month May, May, May, May, May, May, May, May, May, May, May,... ## $ Day 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi... 

Có NA trong tập dữ liệu. Loại bỏ chúng là điều khôn ngoan.

# Step 5 data_air_nona % na.omit() 

Ô cơ bản

Hãy vẽ biểu đồ hình hộp R cơ bản () với sự phân bố của ôzôn theo tháng.

 # Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot() 

Giải thích mã

  • Lưu trữ biểu đồ để sử dụng thêm
    • box_plot: Bạn lưu trữ biểu đồ vào biến box_plot Sẽ hữu ích cho việc sử dụng thêm hoặc tránh dòng mã quá phức tạp
  • Thêm đối tượng hình học của R boxplot ()
    • Bạn chuyển tập dữ liệu data_air_nona sang boxplot ggplot.
    • Bên trong đối số aes (), bạn thêm trục x và trục y.
    • Dấu + có nghĩa là bạn muốn R tiếp tục đọc mã. Nó làm cho mã dễ đọc hơn bằng cách phá vỡ nó.
    • Sử dụng geom_boxplot () để tạo sơ đồ hộp

Đầu ra:

Thay đổi bên của biểu đồ

Bạn có thể lật mặt của đồ thị.

 box_plot + geom_boxplot()+ coord_flip() 

Giải thích mã

  • box_plot: Bạn sử dụng biểu đồ bạn đã lưu trữ. Nó tránh viết lại tất cả các mã mỗi khi bạn thêm thông tin mới vào biểu đồ.
  • geom_boxplot (): Tạo boxplots () trong R
  • coord_flip (): Lật mặt bên của đồ thị

Đầu ra:

Thay đổi màu sắc của ngoại lệ

Bạn có thể thay đổi màu sắc, hình dạng và kích thước của các ngoại lệ.

 box_plot + geom_boxplot(outlier.colour = 'red', outlier.shape = 2, outlier.size = 3) + theme_classic() 

Giải thích mã

  • outlier.colour = 'red': Kiểm soát màu sắc của các điểm ngoại lệ
  • outlier.shape = 2: Thay đổi hình dạng của ngoại lệ. 2 đề cập đến tam giác
  • outlier.size = 3: Thay đổi kích thước của tam giác. Kích thước tỷ lệ thuận với số lượng.

Đầu ra:

Thêm một thống kê tóm tắt

Bạn có thể thêm một thống kê tóm tắt vào ô R boxplot ().

 box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = 'point', size = 3, color = 'steelblue') + theme_classic() 

Giải thích mã

  • stat_summary () cho phép thêm tóm tắt vào ô ngang R
  • Đối số fun.y kiểm soát các thống kê được trả về. Bạn sẽ sử dụng nghĩa là
  • Lưu ý: Các thống kê khác có sẵn như tối thiểu và tối đa. Nhiều số liệu thống kê có thể được hiển thị trong cùng một biểu đồ
  • geom = 'point': Vẽ đồ thị trung bình với một điểm
  • size = 3: Kích thước của điểm
  • color = 'steelblue': Màu của các điểm

Đầu ra:

Ô hộp có dấu chấm

Trong ô hình hộp nằm ngang tiếp theo R, bạn thêm các lớp biểu đồ chấm. Mỗi dấu chấm thể hiện một quan sát.

 box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic() 

Giải thích mã

  • geom_dotplot () cho phép thêm dấu chấm vào chiều rộng thùng rác
  • binaxis = 'y': Thay đổi vị trí của các chấm dọc theo trục y. Theo mặc định, trục x
  • dotize = 1: Kích thước của các chấm
  • stackdir = 'center': Cách xếp chồng các dấu chấm: Bốn giá trị:
    • 'up' (mặc định),
    • 'xuống'
    • 'Trung tâm'
    • 'lỗ trung tâm'

Đầu ra:

Kiểm soát thẩm mỹ của ô hộp

Thay đổi màu sắc của hộp

Bạn có thể thay đổi màu sắc của nhóm.

 ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic() 

Giải thích mã

  • Màu sắc của các nhóm được kiểm soát trong ánh xạ aes (). Bạn có thể sử dụng màu = Tháng để thay đổi màu của hộp và biểu đồ râu theo tháng

Đầu ra:

Biểu đồ hộp có nhiều nhóm

Cũng có thể thêm nhiều nhóm. Bạn có thể hình dung sự khác biệt về chất lượng không khí theo ngày đo.

 ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic() 

Giải thích mã

  • Ánh xạ aes () của đối tượng hình học điều khiển các nhóm hiển thị (biến này phải là một nhân tố)
  • aes (fill = day_cat) cho phép tạo ba hộp cho mỗi tháng theo trục x

Đầu ra:

Ô hộp với các dấu chấm Jittered

Một cách khác để hiển thị dấu chấm là với các điểm lộn xộn. Đây là một cách thuận tiện để trực quan hóa các điểm bằng biểu đồ hộp cho dữ liệu phân loại trong biến R.

Phương pháp này tránh được sự chồng chéo của các dữ liệu rời rạc.

 box_plot + geom_boxplot() + geom_jitter(shape = 15, color = 'steelblue', position = position_jitter(width = 0.21)) + theme_classic() 

Giải thích mã

  • geom_jitter () thêm một ít phân rã vào mỗi điểm.
  • shape = 15 thay đổi hình dạng của các điểm. 15 đại diện cho các ô vuông
  • color = 'steelblue': Thay đổi màu của điểm
  • position = position_jitter (width = 0.21): Cách đặt các điểm chồng lên nhau. position_jitter (width = 0.21) có nghĩa là bạn di chuyển các điểm đi 20 phần trăm so với trục x. Theo mặc định, 40 phần trăm.

Đầu ra:

Bạn có thể thấy sự khác biệt giữa biểu đồ đầu tiên với phương pháp jitter và biểu đồ thứ hai với phương pháp điểm.

 box_plot + geom_boxplot() + geom_point(shape = 5, color = 'steelblue') + theme_classic() 

Lô hộp có khía

Một tính năng thú vị của geom_boxplot (), là một hàm boxplot có khía trong R. Biểu đồ khía thu hẹp ô xung quanh đường trung bình. Mục đích chính của biểu đồ hình hộp có khía là so sánh ý nghĩa của giá trị trung bình giữa các nhóm. Có bằng chứng rõ ràng là hai nhóm có các trung tuyến khác nhau khi các rãnh không chồng lên nhau. Một khía được tính như sau:

với là phần tư và số lượng quan sát.

 box_plot + geom_boxplot(notch = TRUE) + theme_classic() 

Giải thích mã

  • geom_boxplot (notch = TRUE): Tạo hình hộp ngang có khía R

Đầu ra:

Tóm lược

Chúng ta có thể tóm tắt các loại hình hộp ngang R khác nhau trong bảng dưới đây:

Mục tiêu

Mã số

Ô cơ bản

ggplot(df, aes( x = x1, y =y)) + geom_boxplot()

lật mặt

ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()

Âm mưu hộp có khía

ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)

Cốt truyện hộp với các dấu chấm lộn xộn

ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))