Biểu đồ thanh & biểu đồ trong R (có ví dụ)

Biểu đồ thanh là một cách tuyệt vời để hiển thị các biến phân loại theo trục x. Loại biểu đồ này biểu thị hai khía cạnh trong trục y.

  1. Cái đầu tiên đếm số lần xuất hiện giữa các nhóm.
  2. Phần thứ hai hiển thị số liệu thống kê tóm tắt (tối thiểu, tối đa, trung bình, v.v.) của một biến trong trục y.

Bạn sẽ sử dụng tập dữ liệu mtcars có các biến sau:

  • xi lanh: Số xi lanh trên xe. Biến số
  • am: Loại hộp số. 0 cho số tự động và 1 cho số sàn. Biến số
  • mpg: Dặm trên mỗi gallon. Biến số

Cách tạo biểu đồ thanh

Để tạo biểu đồ trong R, bạn có thể sử dụng thư viện ggplot để tạo các biểu đồ sẵn sàng xuất bản. Cú pháp cơ bản của thư viện này là:

ggplot(data, mapping = aes()) +
geometric object 

arguments: 
data: dataset used to plot the graph 
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

Trong hướng dẫn này, bạn quan tâm đến đối tượng hình học geom_bar() tạo biểu đồ thanh.

Biểu đồ thanh: đếm

Biểu đồ đầu tiên của bạn hiển thị tần số của hình trụ với geom_bar(). Đoạn mã dưới đây là cú pháp cơ bản nhất.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Giải thích mã

  • Bạn chuyển tập dữ liệu mtcars tới ggplot.
  • Bên trong đối số aes(), bạn thêm trục x làm biến hệ số (hình trụ)
  • 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_bar() cho đối tượng hình học.

Đầu ra:

Biểu đồ thanh: đếm

Chú thích: hãy đảm bảo bạn chuyển đổi các biến thành một yếu tố nếu không R sẽ coi các biến là số. Xem ví dụ bên dưới.

Biểu đồ thanh: đếm

Tùy chỉnh biểu đồ

Bốn đối số có thể được truyền để tùy chỉnh biểu đồ:

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Thay đổi màu sắc của các thanh

Bạn có thể thay đổi màu sắc của các thanh. Lưu ý rằng màu sắc của các thanh đều giống nhau.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Giải thích mã

  • Màu sắc của các thanh được điều khiển bởi ánh xạ aes() bên trong đối tượng hình học (tức là không có trong ggplot()). Bạn có thể thay đổi màu bằng các đối số điền. Ở đây, bạn chọn màu san hô.

Đầu ra:

Thay đổi màu của thanh

Bạn có thể sử dụng mã này:

grDevices::colors()

để xem tất cả các màu có sẵn trong R. Có khoảng 650 màu.

Thay đổi cường độ

Bạn có thể tăng hoặc giảm cường độ màu của các thanh

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Giải thích mã

  • Để tăng/giảm cường độ của thanh, bạn có thể thay đổi giá trị của alpha. Alpha lớn làm tăng cường độ và alpha thấp làm giảm cường độ. alpha nằm trong khoảng từ 0 đến 1. Nếu 1 thì màu giống với bảng màu. Nếu 0, màu trắng. Bạn chọn alpha = 0.1.

Đầu ra:

Thay đổi cường độ

Tô màu theo nhóm

Bạn có thể thay đổi màu của các thanh, nghĩa là mỗi nhóm có một màu khác nhau. Ví dụ: biến hình trụ có ba cấp độ, sau đó bạn có thể vẽ biểu đồ thanh bằng ba màu.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Giải thích mã

  • Đối số điền bên trong aes() cho phép thay đổi màu của thanh. Bạn thay đổi màu bằng cách đặt biến fill = x-axis. Trong ví dụ của bạn, biến trục x là hình trụ; điền = hệ số(xi lanh)

Đầu ra:

Tô màu theo nhóm

Thêm một nhóm vào các thanh

Bạn có thể chia nhỏ trục y dựa trên một cấp độ yếu tố khác. Ví dụ, bạn có thể đếm số hộp số tự động và hộp số sàn dựa trên loại xi-lanh.

Bạn sẽ tiến hành như sau:

  • Bước 1: Tạo khung dữ liệu với tập dữ liệu mtcars
  • Bước 2: Gắn nhãn biến am bằng auto cho hộp số tự động và man cho hộp số sàn. Chuyển đổi am và cyl thành một hệ số để bạn không cần sử dụng factor() trong hàm ggplot().
  • Bước 3: Vẽ biểu đồ thanh để đếm số lượng truyền động theo xi lanh
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Bạn đã có sẵn tập dữ liệu, bạn có thể vẽ biểu đồ;

# Bước 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Giải thích mã

  • ggpplot() chứa dữ liệu tập dữ liệu và aes().
  • Trong aes() bạn bao gồm biến x-axis và biến nào được yêu cầu để điền vào thanh (tức là am)
  • geom_bar(): Tạo biểu đồ thanh

Đầu ra:

Thêm một nhóm trong quán bar

Ánh xạ sẽ lấp đầy thanh bằng hai màu, một màu cho mỗi cấp độ. Thật dễ dàng để thay đổi nhóm bằng cách chọn các biến yếu tố khác trong tập dữ liệu.

Biểu đồ thanh theo tỷ lệ phần trăm

Bạn có thể hình dung thanh theo tỷ lệ phần trăm thay vì số liệu thô.

# Biểu đồ thanh theo tỷ lệ phần trăm

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Giải thích mã

  • Sử dụng vị trí = “điền” trong đối số geom_bar() để tạo đồ họa có phần trăm theo trục y.

Đầu ra:

Biểu đồ thanh theo tỷ lệ phần trăm

Các thanh cạnh nhau

Thật dễ dàng để vẽ biểu đồ thanh với biến nhóm cạnh nhau.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Giải thích mã

  • vị trí=position_dodge(): Cho biết rõ ràng cách sắp xếp các thanh

Đầu ra:

Thanh cạnh nhau

Histogram

Trong phần thứ hai của hướng dẫn biểu đồ thanh, bạn có thể biểu thị nhóm biến có giá trị theo trục y.

Mục tiêu của bạn là tạo một biểu đồ với số dặm trung bình trên mỗi gallon cho từng loại xi lanh. Để vẽ một biểu đồ thông tin, bạn sẽ làm theo các bước sau:

  • Bước 1: Tạo biến mới tính số dặm trung bình trên gallon theo xi lanh
  • Bước 2: Tạo biểu đồ cơ bản
  • Bước 3: Thay đổi hướng
  • Bước 4: Thay đổi màu sắc
  • Bước 5: Thay đổi kích thước
  • Bước 6: Thêm nhãn vào biểu đồ

Bước 1) Tạo một biến mới

Bạn tạo một khung dữ liệu có tên data_histogram, khung này chỉ đơn giản trả về số dặm trung bình trên mỗi gallon theo số lượng xi-lanh trong ô tô. Bạn gọi biến mới này là Mean_mpg và làm tròn giá trị trung bình bằng hai số thập phân.

# Bước 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

Bước 2) Tạo biểu đồ cơ bản

Bạn có thể vẽ biểu đồ. Nó chưa sẵn sàng để giao cho khách hàng nhưng cho chúng ta trực giác về xu hướng.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Giải thích mã

  • aes() hiện có hai biến. Biến hình trụ đề cập đến trục x và giá trị trung bình_mpg là trục y.
  • Bạn cần truyền đối số stat=”identity” để tham chiếu biến trong trục y dưới dạng giá trị số. geom_bar sử dụng stat=”bin” làm giá trị mặc định.

Đầu ra:

Histogram

Bước 3) Thay đổi hướng

Bạn thay đổi hướng của đồ thị từ dọc sang ngang.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Giải thích mã

  • Bạn có thể điều khiển hướng của biểu đồ bằng coord_flip().

Đầu ra:

Histogram

Bước 4) Thay đổi màu sắc

Bạn có thể phân biệt màu sắc của các thanh theo mức hệ số của biến trục x.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Giải thích mã

  • Bạn có thể vẽ biểu đồ theo nhóm bằng ánh xạ hình trụ fill=. R tự động xử lý màu sắc dựa trên mức độ biến trụ

Đầu ra:

Histogram

Bước 5) Thay đổi kích thước

Để làm cho đồ thị trông đẹp hơn, bạn giảm độ rộng của thanh.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Giải thích mã

  • Đối số chiều rộng bên trong geom_bar() kiểm soát kích thước của thanh. Giá trị lớn hơn làm tăng chiều rộng.
  • Lưu ý, bạn lưu trữ biểu đồ trong biểu đồ biến. Bạn làm như vậy vì bước tiếp theo sẽ không thay đổi mã của biểu đồ biến. Nó cải thiện khả năng đọc của mã.

Đầu ra:

Histogram

Bước 6) Thêm nhãn vào biểu đồ

Bước cuối cùng bao gồm thêm giá trị của biến Mean_mpg vào nhãn.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Giải thích mã

  • Hàm geom_text() rất hữu ích để kiểm soát tính thẩm mỹ của văn bản.
    • label=: Thêm nhãn bên trong các thanh
    • Mean_mpg: Sử dụng biến Mean_mpg cho nhãn
  • hjust kiểm soát vị trí của nhãn. Các giá trị đóng thành 1 sẽ hiển thị nhãn ở đầu thanh và các giá trị cao hơn sẽ đưa nhãn xuống dưới cùng. Nếu hướng của đồ thị là thẳng đứng, hãy thay đổi hjust thành vjust.
  • color=”white”: Thay đổi màu sắc của văn bản. Ở đây bạn sử dụng màu trắng.
  • size=3: Đặt kích thước của văn bản.

Đầu ra:

Histogram

Tổng kết

Biểu đồ thanh rất hữu ích khi trục x là biến phân loại. Trục y có thể là số đếm hoặc thống kê tóm tắt. Bảng dưới đây tóm tắt cách kiểm soát biểu đồ thanh bằng ggplot2:

Mục tiêu
Đếm
ggplot(df, eas(x= factor(x1)) + geom_bar()
Đếm với màu tô khác nhau
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Đếm theo nhóm, xếp chồng lên nhau
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Đếm theo nhóm, cạnh nhau
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Đếm theo nhóm, xếp chồng lên nhau theo %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Các giá trị
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")