Biểu đồ phân tán trong R bằng ggplot2 (có ví dụ)
Đồ thị là phần thứ ba của quá trình phân tích dữ liệu. Phần đầu tiên là về trích xuất dữ liệu, phần thứ hai đề cập đến làm sạch và thao tác dữ liệu. Cuối cùng, nhà khoa học dữ liệu có thể cần phải truyền đạt kết quả của mình bằng đồ họa.
Công việc của nhà khoa học dữ liệu có thể được xem xét trong hình ảnh sau
- Nhiệm vụ đầu tiên của một nhà khoa học dữ liệu là xác định câu hỏi nghiên cứu. Câu hỏi nghiên cứu này phụ thuộc vào mục tiêu và mục tiêu của dự án.
- Sau đó, một trong những nhiệm vụ nổi bật nhất là kỹ thuật tính năng. Nhà khoa học dữ liệu cần thu thập, thao tác và làm sạch dữ liệu
- Khi bước này hoàn thành, anh ta có thể bắt đầu khám phá tập dữ liệu. Đôi khi, cần phải sàng lọc và thay đổi giả thuyết ban đầu do có phát hiện mới.
- Khi giải thích đạt được phân tích, nhà khoa học dữ liệu phải xem xét khả năng của người đọc trong việc hiểu các khái niệm và mô hình cơ bản.
- Kết quả của anh ấy phải được trình bày ở dạng mà tất cả các bên liên quan đều có thể hiểu được. Một trong những phương pháp tốt nhất để giao tiếp kết quả là thông qua một đồ thị.
- Biểu đồ là công cụ tuyệt vời để đơn giản hóa các phân tích phức tạp.
gói ggplot2
Phần hướng dẫn này tập trung vào cách tạo biểu đồ/biểu đồ bằng R.
Trong hướng dẫn này, bạn sẽ sử dụng gói ggplot2. Gói này được xây dựng dựa trên nền tảng nhất quán của cuốn sách Ngữ pháp đồ họa do Wilkinson viết năm 2005. ggplot2 rất linh hoạt, kết hợp nhiều chủ đề và đặc tả cốt truyện ở mức độ trừu tượng cao. Với ggplot2, bạn không thể vẽ đồ họa 3 chiều và tạo đồ họa tương tác.
Trong ggplot2, đồ thị được tạo thành từ các đối số sau:
- dữ liệu
- lập bản đồ thẩm mỹ
- đối tượng hình học
- các phép biến đổi thống kê
- quy mô
- hệ tọa độ
- điều chỉnh vị trí
- khía cạnh
Bạn sẽ học cách kiểm soát những đối số đó trong phần hướng dẫn.
Cú pháp cơ bản của ggplot2 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 object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
biểu đồ phân tán
Hãy xem ggplot hoạt động như thế nào với tập dữ liệu mtcars. Bạn bắt đầu bằng cách vẽ biểu đồ phân tán của biến mpg và biến drat.
Biểu đồ phân tán cơ bản
library(ggplot2) ggplot(mtcars, aes(x = drat, y = mpg)) + geom_point()
Giải thích mã
- Trước tiên, 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 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_point() cho đối tượng hình học.
Đầu ra:
Biểu đồ phân tán với các nhóm
Đôi khi, việc phân biệt các giá trị theo một nhóm dữ liệu (tức là dữ liệu cấp độ yếu tố) có thể rất thú vị.
ggplot(mtcars, aes(x = mpg, y = drat)) + geom_point(aes(color = factor(gear)))
Giải thích mã
- aes() bên trong geom_point() kiểm soát màu của nhóm. Nhóm phải là một biến nhân tố. Vì vậy, bạn chuyển đổi bánh răng biến thiên trong một hệ số.
- Nhìn chung, bạn có mã aes(color = Factor(gear)) để thay đổi màu của các chấm.
Đầu ra:
Thay đổi trục
Thay đổi quy mô dữ liệu là một phần quan trọng trong công việc của nhà khoa học dữ liệu. Trong một số trường hợp hiếm hoi, dữ liệu có hình chuông đẹp mắt. Một giải pháp để làm cho dữ liệu của bạn ít nhạy cảm hơn với các giá trị ngoại lệ là thay đổi kích thước của chúng.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear)))
Giải thích mã
- Bạn chuyển đổi trực tiếp các biến x và y trong log() bên trong ánh xạ aes().
Lưu ý rằng bất kỳ phép biến đổi nào khác đều có thể được áp dụng như chuẩn hóa hoặc chuẩn hóa.
Đầu ra:
Biểu đồ phân tán với các giá trị được trang bị
Bạn có thể thêm một mức thông tin khác vào biểu đồ. Bạn có thể vẽ giá trị phù hợp của hồi quy tuyến tính.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear))) + stat_smooth(method = "lm", col = "#C42126", se = FALSE, size = 1) my_graph
Giải thích mã
- graph: Bạn lưu trữ biểu đồ của mình vào biến graph. Nó hữu ích cho việc sử dụng sau này hoặc tránh các dòng mã quá phức tạp
- Đối số stat_smooth() điều khiển phương pháp làm mịn
- phương thức = “lm”: Hồi quy tuyến tính
- col = “#C42126”: Mã màu đỏ của dòng
- se = FALSE: Không hiển thị lỗi chuẩn
- size = 1: kích thước của dòng là 1
Đầu ra:
Lưu ý rằng có sẵn các phương pháp làm mịn khác
- lém lỉnh
- trò chơi
- hoàng thổ: giá trị mặc định
- vành bánh xe
Thêm thông tin vào biểu đồ
Cho đến nay, chúng tôi vẫn chưa thêm thông tin vào biểu đồ. Biểu đồ cần phải cung cấp thông tin. Người đọc sẽ thấy được câu chuyện đằng sau phân tích dữ liệu chỉ bằng cách xem biểu đồ mà không cần tham khảo thêm tài liệu. Do đó, biểu đồ cần có nhãn tốt. Bạn có thể thêm nhãn bằng hàm labs().
Cú pháp cơ bản của lab() là:
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Thêm tiêu đề
Một thông tin bắt buộc phải thêm rõ ràng là tiêu đề.
my_graph + labs( title = "Plot Mile per hours and drat, in log" )
Giải thích mã
- my_graph: 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 đồ.
- Bạn bọc tiêu đề bên trong lab().
- Mã cho màu đỏ của dòng
- se = FALSE: Không hiển thị lỗi chuẩn
- size = 1: kích thước của dòng là 1
Đầu ra:
Thêm tiêu đề với tên động
Tiêu đề động rất hữu ích để thêm thông tin chính xác hơn vào tiêu đề.
Bạn có thể sử dụng hàm dán() để in văn bản tĩnh và văn bản động. Cú pháp cơ bản của dán() là:
paste("This is a text", A) arguments - " ": Text inside the quotation marks are the static text - A: Display the variable stored in A - Note you can add as much static text and variable as you want. You need to separate them with a comma
Ví dụ:
A <-2010 paste("The first year is", A)
Đầu ra:
## [1] "The first year is 2010"
B <-2018 paste("The first year is", A, "and the last year is", B)
Đầu ra:
## [1] "The first year is 2010 and the last year is 2018"
Bạn có thể thêm tên động vào biểu đồ của chúng tôi, cụ thể là mức trung bình của mpg.
mean_mpg <- mean(mtcars$mpg) my_graph + labs( title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg) )
Giải thích mã
- Bạn tạo mức trung bình của mpg với giá trị trung bình (mtcars$mpg) được lưu trữ trong biến Mean_mpg
- Bạn sử dụng hàm dán() với Mean_mpg để tạo tiêu đề động trả về giá trị trung bình của mpg
Đầu ra:
Thêm phụ đề
Hai chi tiết bổ sung có thể làm cho biểu đồ của bạn rõ ràng hơn. Bạn đang nói về phụ đề và chú thích. Phụ đề nằm ngay bên dưới tiêu đề. Chú thích có thể cho biết ai đã thực hiện tính toán và nguồn dữ liệu.
my_graph + labs( title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Giải thích mã
- Bên trong lab(), bạn đã thêm:
- title = “Mối quan hệ giữa Dặm trên giờ và drat”: Thêm tiêu đề
- subtitle = “Phân tích mối quan hệ theo cấp độ”: Thêm phụ đề
- chú thích = “Tính toán riêng của tác giả: Thêm chú thích
- Bạn phân tách từng thông tin mới bằng dấu phẩy, ,
- Lưu ý rằng bạn ngắt dòng mã. Nó không bắt buộc và nó chỉ giúp đọc mã dễ dàng hơn
Đầu ra:
Đổi tên trục x và trục y
Bản thân các biến trong tập dữ liệu có thể không phải lúc nào cũng rõ ràng hoặc theo quy ước sử dụng _ khi có nhiều từ (ví dụ GDP_CAP). Bạn không muốn tên như vậy xuất hiện trong biểu đồ của mình. Điều quan trọng là phải thay đổi tên hoặc thêm nhiều chi tiết hơn, như đơn vị.
my_graph + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Giải thích mã
- Bên trong lab(), bạn đã thêm:
- x=“Định nghĩa Drat”: Thay đổi tên trục x
- y = “Dặm trên giờ”: Thay đổi tên trục y
Đầu ra:
Kiểm soát cân
Bạn có thể kiểm soát quy mô của trục.
Hàm seq() rất tiện lợi khi bạn cần tạo một dãy số. Cú pháp cơ bản là:
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
Ví dụ: nếu bạn muốn tạo một phạm vi từ 0 đến 12 với bước 3, bạn sẽ có bốn số, 0 4 8 12
seq(0, 12,4)
Đầu ra:
## [1] 0 4 8 12
Bạn có thể điều khiển tỷ lệ của trục x và trục y như bên dưới
my_graph + scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) + scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Giải thích mã
- Hàmscale_y_continuous() điều khiển trục y
- Hàmscale_x_continuous() điều khiển trục x.
- Việc ngắt tham số kiểm soát sự phân chia của trục. Bạn có thể thêm dãy số theo cách thủ công hoặc sử dụng hàm seq():
- seq(1, 3.6, by = 0.2): Tạo sáu số từ 2.4 đến 3.4 với bước nhảy là 3
- seq(1, 1.6, by = 0.1): Tạo 1 số từ 1.6 đến 1 với bước nhảy là XNUMX
Đầu ra:
chủ đề
Cuối cùng, R cho phép chúng ta tùy chỉnh cốt truyện với các chủ đề khác nhau. Thư viện ggplot2 bao gồm tám chủ đề:
- chủ đề_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- theme_gray()
- theme_void()
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Đầu ra:
Lưu lô
Sau tất cả các bước này, đã đến lúc lưu và chia sẻ biểu đồ của bạn. Bạn thêm ggsave('NAME OF THE FILE) ngay sau khi vẽ biểu đồ và nó sẽ được lưu trên ổ cứng.
Biểu đồ được lưu trong thư mục làm việc. Để kiểm tra thư mục làm việc, bạn có thể chạy mã này:
directory <-getwd() directory
Hãy vẽ biểu đồ tuyệt vời của bạn, lưu nó và kiểm tra vị trí
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Đầu ra:
ggsave("my_fantastic_plot.png")
Đầu ra:
## Saving 5 x 4 in image
Chú thích: Chỉ nhằm mục đích sư phạm, chúng tôi đã tạo một hàm có tên open_folder() để mở thư mục thư mục cho bạn. Bạn chỉ cần chạy mã bên dưới và xem hình ảnh được lưu trữ ở đâu. Bạn sẽ thấy tên tệp my_fantastic_plot.png.
# Run this code to create the function open_folder <- function(dir) { if (.Platform['OS.type'] == "windows") { shell.exec(dir) } else { system(paste(Sys.getenv("R_BROWSER"), dir)) } } # Call the function to open the folder open_folder(directory)
Tổng kết
Bạn có thể tóm tắt các đối số để tạo biểu đồ phân tán trong bảng bên dưới:
Mục tiêu | Mã |
---|---|
Biểu đồ phân tán cơ bản |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Biểu đồ phân tán với nhóm màu |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Thêm các giá trị được trang bị |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Thêm tiêu đề |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Thêm phụ đề |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Đổi tên x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Đổi tên y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Kiểm soát quy mô |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
Tạo nhật ký |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
chủ đề |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Tiết kiệm |
ggsave("my_fantastic_plot.png") |