Đồ 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ề khai thác dữ liệu , phần thứ hai đề cập đến việc 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 truyền đạt kết quả của mình bằng đồ thị .
Công việc của nhà khoa học dữ liệu có thể được xem lại trong hình sau
- Nhiệm vụ đầu tiên của một nhà khoa học dữ liệu là xác định một 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 một phát hiện mới.
- Khi đạt được phân tích giải thích , nhà khoa học dữ liệu phải xem xét khả năng hiểu các khái niệm và mô hình cơ bản của người đọc .
- Kết quả của anh ta nên được trình bày theo một định dạng mà tất cả các bên liên quan có thể hiểu được. Một trong những phương pháp tốt nhất để truyền đạt kết quả là thông qua biểu đồ .
- Đồ thị là một công cụ đáng kinh ngạc để đơn giản hóa các phân tích phức tạp.
Trong hướng dẫn này, bạn sẽ học-
- gói ggplot2
- Scatterplot
- Thay đổi trục
- Biểu đồ phân tán với các giá trị phù hợp
- Thêm thông tin vào biểu đồ
- Đổi tên trục x và trục y
- Kiểm soát cân
- Chủ đề
- Lưu lô đất
gói ggplot2
Phần này của hướng dẫn tập trung vào cách tạo đồ thị / 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, 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, một biểu đồ bao gồm các đối số sau:
- dữ liệu
- bản đồ thẩm mỹ
- đối tượng hình học
- 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 các đối số đó trong hướng dẫn này.
Cú pháp cơ bản của ggplot2 là:
ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric 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()`
Scatterplot
Hãy xem cách ggplot hoạt động với bộ 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ã
- Đầu tiên bạn chuyển mtcars tập dữ liệu sang 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, có thể thú vị khi phân biệt các giá trị theo một nhóm dữ liệu (tức là dữ liệu mức nhân tố).
ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))
Giải thích mã
- Các 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ố. Do đó, bạn chuyển đổi hộp số 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
Bán lại 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ó dạng hình chuông đẹp. 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 yếu tố ngoại lai là bán lại chúng.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))
Giải thích mã
- Bạn biến đổi các biến x và y trong log () trực tiếp bên trong ánh xạ aes ().
Lưu ý rằng có thể áp dụng bất kỳ phép biến đổi nào khác 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ị phù hợp
Bạn có thể thêm một mức thông tin khác vào biểu đồ. Bạn có thể vẽ biểu đồ giá trị phù hợp của một 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ã
- đồ thị: Bạn lưu trữ đồ thị của mình vào đồ thị biến số. Nó hữu ích cho việc sử dụng thêm hoặc tránh dòng mã quá phức tạp
- Đối số stat_smooth () điều khiển phương thức làm mịn
- method = "lm": Hồi quy tuyến tính
- col = "# C42126": Mã cho màu đỏ của đườ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ác phương pháp làm mịn khác có sẵn
- glm
- gam
- hoàng thổ: giá trị mặc định
- vành
Thêm thông tin vào biểu đồ
Cho đến nay, chúng tôi chưa thêm thông tin vào biểu đồ. Đồ thị cần phải có nhiều thông tin. Người đọc sẽ thấy câu chuyện đằng sau việc phân tích dữ liệu chỉ bằng cách nhìn vào biểu đồ mà không cần tham khảo thêm tài liệu. Do đó, đồ thị 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 cho 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-axisExample: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à một 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 đườ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 paste () để in văn bản tĩnh và văn bản động. Cú pháp cơ bản của paste () 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
Thí dụ:
A <-2010paste("The first year is", A)
Đầu ra:
## [1] "The first year is 2010"
B <-2018paste("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à giá trị 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 giá trị 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 paste () 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ể thông báo về 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 = "Mối quan hệ chia nhỏ theo cấp bánh răng": Thêm phụ đề
- caption = "Tính toán của riêng 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 dấu _ khi có nhiều từ (tức là 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 các chi tiết khác, chẳng hạn như các đơ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 của trục x
- y = "Mile per hours": Thay đổi tên của trục y
Đầu ra:
Kiểm soát cân
Bạn có thể kiểm soát tỷ lệ 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ể kiểm soát 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àm scale_y_continuous () điều khiển trục y
- Hàm scale_x_continuous () điều khiển trục x .
- Tham số ngắt kiểm soát sự phân chia 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, x = 0,2): Tạo sáu số từ 2,4 đến 3,4 với bước 3
- seq (1, 1,6, x = 0,1): Tạo bảy số từ 1 đến 1,6 với bước 1
Đầ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ủ đề:
- theme_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ô đất
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 ('TÊN TẬP TIN) ngay sau khi vẽ biểu đồ và nó sẽ được lưu trữ 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.webp")
Đầu ra:
## Saving 5 x 4 in image
Lưu ý : Chỉ cho 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 đoạn mã dưới đây và xem hình ảnh được lưu trữ ở đâu. Bạn sẽ thấy tên tệp my_fantastic_plot.png.webp.
# Run this code to create thefunctionopen_folder <- function(dir) {if (.Platform['OS.type'] == "windows") {shell.exec(dir)} else {system(paste(Sys.getenv("R_BROWSER"), dir))}}# Call thefunction to open the folder open_folder(directory)
Tóm lược
Bạn có thể tóm tắt các đối số để tạo biểu đồ phân tán trong bảng dưới đây:
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ị vừa vặn |
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.webp") |