Bộ dữ liệu được dụng là bộ dữ liệu Diamonds có sẵn trong R
Bộ dữ liệu diamonds trong R là một tập dữ liệu phổ biến được sử dụng trong các ví dụ và hướng dẫn về phân tích dữ liệu. Nó bao gồm thông tin về 53.940 viên kim cương cắt tròn, với 10 biến mô tả các đặc điểm khác nhau của mỗi viên kim cương:
library(DT)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
h<- diamonds
datatable(h)
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
Biểu đồ thanh (Bar chart) là một dạng biểu đồ thống kê thị trường phổ biến, sử dụng các thanh dọc hoặc ngang để biểu diễn dữ liệu theo thời gian hoặc theo các nhóm khác nhau. Mỗi thanh đại diện cho một giá trị cụ thể, và độ dài của thanh thể hiện giá trị đó.
Ý nghĩa của biểu đồ thanh:
library(dplyr)
install.packages('ggplot2')
## Warning: package 'ggplot2' is in use and will not be installed
library(ggplot2)
Giải thích chi tiết:
library(tidyverse)
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
h %>% ggplot(aes(x=cut))+geom_bar()+
labs(x='Loại',y='Số lượng',title = 'Hình 1.1: Số lượng của những loại kim cương theo biến cut')
Giải thích câu lệnh
Nhận xét kết quả
Kết quả nhận được là một biểu đồ dạng Bar_Chart thể hiện gồm số lượng của những loại kim cương(Fair, Good, Very good, Premium, Ideal).Qua biểu đồ trên chúng ta sẽ thấy được số lượng của Ideal chiếm nhiều nhất cụ thể là lớn hơn 20000 kim cương trong 5 loại trên. Chiếm tỷ lệ thấp nhất là Fair là nhỏ hơn 5000 kim cương . Số lượng kim cương giảm dần từ Ideal đến Fair. Có sự chênh lệch lớn giữa loại lớn nhất và thấp nhất
table(diamonds$clarity)
##
## I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IF
## 741 9194 13065 12258 8171 5066 3655 1790
h %>% ggplot(aes(x= clarity)) +
geom_bar( )+
labs(x = 'Clarity', y= ' Số lượng', title='Hình 1.2: Số lượng của những loại kim cương theo độ trong suốt')
Giải thích
Kết quả nhận được là một biểu đồ dạng Bar_Chart thể hiện gồm số lượng của những loại kim cương (I1,SI2,SI1,VS2,VS1,VVS2,VVS1,IF) .Trục x thể hiện độ trong suốt kim cương, từ thấp đến cao (từ “I1” đến “IF”). - Trục y thể hiện số lượng kim cương tương ứng với mỗi cấp độ độ trong suốt. Qua biểu đồ trên chúng ta sẽ thấy được số lượng của SI1 chiếm nhiều nhất cụ thể là lớn hơn 10000 kim cương trong 8 loại trên. Chiếm tỷ lệ thấp nhất là I1 là nhỏ hơn 2500 kim cương .Có sự chênh lệch lớn giữa loại lớn nhất và thấp nhất
h %>% group_by(cut) %>% summarise(n = n()) %>% ggplot(aes(cut,n))+
geom_col(fill='black')+
geom_text(aes(label = n), vjust = 1, color = 'pink') +
labs(x = 'Loại', y = 'Số lượng', title='Hình 1.3:Số lượng của những loại kim cương theo biến cut ')
Giải thích câu lệnh
Tạo nhóm và đếm số lượng:
Nhận xét kết quả
h %>% group_by(color) %>% summarise(n = n()) %>% ggplot(aes(color,n))+
geom_col(fill='maroon')+
geom_text(aes(label = n), vjust =0, color = 'black') +
labs(x = 'Color', y = 'Số lượng', title= 'Hình 1.4: Số lượng của những loại kim cương theo màu')
Nhận xét kết quả
h %>% group_by(clarity) %>% summarise(n = n()) %>% ggplot(aes(clarity,n))+
geom_col(fill='navyblue')+
geom_text(aes(label = n), vjust = 1, color = 'pink') +
labs(x = 'Clarity', y = 'Số lượng',title='Hình1.5: Số lượng kim cương theo độ trong suốt')
Nhận xét kết quả
h%>% group_by(cut) %>% summarise(n=n())%>% ggplot(aes(cut,n))+ geom_col(fill='skyblue')+geom_text(aes(label=percent(n/length(h$carat))),vjust=1, color='black')+labs(x='Loại',y='Số lượng',title='Hình1.6: Số lượng kim cương theo chất lượng đường cắt ')
Giải thích câu lệnh
Biểu đồ này tương tự như biểu đồ trước, nhưng thay vì hiển thị số lượng kim cương tuyệt đối (n), nó hiển thị tỷ lệ phần trăm của mỗi nhóm so với tổng số kim cương. Tỷ lệ phần trăm được tính bằng cách chia số lượng kim cương trong mỗi nhóm (n) cho tổng số kim cương (length(h$carat)) và nhân với 100 để chuyển thành dạng phần trăm. Văn bản hiển thị trên mỗi cột thể hiện tỷ lệ phần trăm này.
Nhận xét kết quả
h%>% group_by(cut) %>% summarise(v= var(carat)) %>%
ggplot(aes(x = cut,y = v)) +
geom_col(position = 'dodge') +
geom_text(aes(label = round(v,2)), vjust = 2, color = 'pink') +
labs(x = 'cut', y = 'Var',title='Hình 1.7:Phương sai của carat theo biến chất lượng đường cắt ')
Giải thích câu lệnh
Nhận xét kết quả
Suy ra, kiểu cắt kim cương ảnh hưởng đến mức độ chênh lệch của biến “carat”.Kim cương có kiểu cắt “Fair và Premiuml” có mức đọ chênh lệch cao nhất về biến “carat” tức là có độ biến thiên cao nhất về kích thước carat. Điều này có nghĩa là kim cương trong nhóm “Fair và Premium” có thể có kích thước carat chênh lệch nhau đáng kể. Vd:Phương sai của Fair cao hơn Ideal. Điều này có nghĩa là trọng lượng của kim cương Fair phân tán rộng hơn quanh giá trị trung bình
h %>% group_by(cut,color) %>% summarise(n=n()) %>%
ggplot(aes(x = cut,y = n)) +
geom_col(position = 'dodge') +
facet_wrap(~color) +
geom_text(aes(label = n),vjust = 0, color = 'black') +
labs(x = 'Loại', y = 'Số lượng',title='Hình1.8: Số lượng theo chất lượng đường cắt và màu')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Giải thích câu lệnh
Nhận xét kết quả
h %>% group_by(cut,clarity) %>% summarise(n=n()) %>%
ggplot(aes(x = cut,y = n)) +
geom_col(position = 'dodge') +
facet_wrap(~clarity) +
geom_text(aes(label = n),vjust = 0
, color = 'red') +
labs(x = 'Loại', y = 'Số lượng', title='Hình 1.9: Số lượng kím cương theo chất lượng đường cắt và độ trong suốt')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Giải thích câu lệnh*
Tính số lượng quan sát trong mỗi nhóm.
Tạo biểu đồ thanh với một thanh cho mỗi kết hợp duy nhất của cut và clarity, được tô màu theo clarity.
Vị trí các thanh cạnh nhau để tránh chồng chéo.
Thêm nhãn văn bản để hiển thị số lượng trên các thanh.
Nhãn trục và thêm tiêu đề cho biểu đồ.
Nhận xét kết quả
h %>% group_by(clarity,color) %>% summarise(n=n()) %>%
ggplot(aes(x = clarity,y = n)) +
geom_col(position = 'dodge') +
facet_wrap(~color) +
geom_text(aes(label = n),vjust = 0, color = 'red') +
labs(x = 'clarity', y = 'Số lượng',title='Hình 1.10: Số lượng kim cương theo độ trong suốt và màu')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Nhận xét biểu đồ
h%>% group_by(cut, color)%>%summarise(m=mean(table))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'cut', y= 'Mean',title='Hình 1.11: Giá trị trung bình của table theo cut và color')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Biểu thức aes(label = round(m)) xác định rằng nội dung của nhãn sẽ lấy từ cột m, chứa trung bình của bảng tần suất, nhưng được làm tròn trước khi hiển thị.
Nhận xét biểu đồ
Ta có thể nhanh chóng nắm bắt và so sánh các giá trị trung bình của biến “table” trong các nhóm khác nhau được xác định bởi “cut” và “color”. Ý nghĩa của biểu đồ là hiển thị trung bình của cột “table” theo các mức độ “cut” và “color”, giúp hiểu rõ hơn về sự phân bố của dữ liệu. Dưới đây là ví dụ về cách sử dụng biểu đồ này: Biểu đồ này có thể được sử dụng trong ngành công nghiệp kim hoàn để so sánh trung bình của cột “table” (một chỉ số về chất lượng của viên kim cương) giữa các mức độ “cut” (cách xử lý viên kim cương) và “color” (màu sắc của viên kim cương). Điều này có thể giúp cho các nhà sản xuất kim cương hiểu được mối quan hệ giữa cách xử lý và chất lượng của sản phẩm.
h%>% group_by(cut, color)%>%summarise(m=var(table))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge',fill='grey')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=0, color='red')+ labs(x= 'cut', y= 'Var',title='Hình 1.12: Phương sai của table theo cut và color')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Nhận xét biểu đồ
Tác dụng của biểu đồ này là hiển thị phương sai của cột “table” theo các mức độ “cut” và “color”, cho ta cái nhìn về sự biến động của dữ liệu. Qua đây ta thấy được phương sai của mỗi nhóm color đều có xu hướng giảm dần từ Fair xuống Ideal
Suy ra, kiểu cắt kim cương ảnh hưởng đến mức độ chênh lệch của biến “carat”.Kim cương có kiểu cắt “Fair và Premiuml” có mức đọ chênh lệch cao nhất về biến “carat” tức là có độ biến thiên cao nhất về kích thước carat. Điều này có nghĩa là kim cương trong nhóm “Fair và Premium” có thể có kích thước carat chênh lệch nhau đáng kể.
Ví dụ:
Chất lượng cắt “Very Good”: Mặt cắt trên: Giả sử cột “Very Good” trên mặt cắt trên có chiều cao lớn hơn cột “Very Good” trên mặt cắt dưới. Điều này có nghĩa là số lượng kim cương màu sắc 1 (được xác định trong code) có phương sai cao hơn khi chất lượng cắt là “Very Good”. Nói cách khác, số lượng kim cương có thể khác biệt nhiều hơn giữa các chất lượng cắt “Very Good” cho màu sắc 1 so với màu sắc 2. So sánh: Bạn có thể so sánh trực quan phương sai của số lượng kim cương theo chất lượng cắt giữa hai màu sắc khác nhau bằng cách quan sát chiều cao tương đối của các cột trong cùng một nhóm chất lượng cắt trên hai mặt cắt riêng biệt.
h%>% group_by(cut, color)%>%summarise(m=mean(depth))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=1, color='orange')+ labs(x= 'cut', y= 'Mean',title='Hình 1.13: Giá trị trung bình của depth theo cut và color')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Nhận xét kết quả
Ta có thể nhanh chóng nắm bắt và so sánh các giá trị trung bình của biến “depth” trong các nhóm khác nhau được xác định bởi “cut” và “color”. Nhìn vào kết quả ta thấy được giá ttrịtrung bình của mỗi loại cut trong các nhóm color dao đồng trong khoảng 61 đến 64. Ý nghĩa của biểu đồ là hiển thị trung bình của cột “depth” theo các mức độ “cut” và “color”, giúp hiểu rõ hơn về sự phân bố của dữ liệu. Dưới đây là ví dụ về cách sử dụng biểu đồ này: Biểu đồ này có thể được sử dụng trong ngành công nghiệp kim hoàn để so sánh trung bình của cột “depth” (một chỉ số về chất lượng của viên kim cương) giữa các mức độ “cut” (cách xử lý viên kim cương) và “color” (màu sắc của viên kim cương). Điều này có thể giúp cho các nhà sản xuất kim cương hiểu được mối quan hệ giữa cách xử lý và chất lượng của sản phẩm. Giả sử bạn đang làm việc với một tập dữ liệu về các viên kim cương, trong đó mỗi viên kim cương có các thuộc tính như chất lượng cắt (“cut”), màu sắc (“color”) và độ sâu (“depth”). Bằng cách sử dụng mã này, bạn có thể tạo ra một biểu đồ cột hiển thị sự biến đổi của độ sâu trung bình của các viên kim cương dựa trên chất lượng cắt và màu sắc, giúp bạn hiểu rõ hơn về tương quan giữa các biến này và độ sâu của viên kim cương.
h%>% group_by(cut, color)%>%summarise(m=mean(price))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'cut', y= 'Số lượng',title='Hình 1.14: Giá trị trung bình của price theo cut và color')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Nhận xét kêt quả
Ta có thể nhanh chóng nắm bắt và so sánh các giá trị trung bình của biến “price” trong các nhóm khác nhau được xác định bởi “cut” và “color”.
Ý nghĩa của biểu đồ là hiển thị trung bình của cột “price” theo các mức độ “cut” và “color”, giúp hiểu rõ hơn về sự phân bố của dữ liệu. Dưới đây là ví dụ về cách sử dụng biểu đồ này: Biểu đồ này có thể được sử dụng trong ngành công nghiệp kim hoàn để so sánh trung bình của cột “price” (một chỉ số về chất lượng của viên kim cương) giữa các mức độ “cut” (cách xử lý viên kim cương) và “color” (màu sắc của viên kim cương). Điều này có thể giúp cho các nhà sản xuất kim cương hiểu được mối quan hệ giữa cách xử lý và chất lượng của sản phẩm.
h%>% group_by(cut, clarity)%>%summarise(m=mean(table))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~clarity)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'cut', y= 'Mean',title='Hình 1.15: Giá trị trung bình của table theo chất lượng cắt và độ trong suốt')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Giải thích
Biểu đồ này có tác dụng hiển thị giá trị trung bình của cột “table” theo các nhóm được phân loại bởi cắt (cut) và rõ ràng (clarity) của kim cương. Các thanh cột được chia thành các nhóm theo “cut” và mỗi nhóm được phân tách dựa trên “clarity”. Mỗi thanh cột đại diện cho giá trị trung bình của cột “table” cho từng nhóm. Các nhóm được phân chia bởi “clarity” sẽ được hiển thị trên các panel khác nhau, giúp so sánh sự thay đổi của giá trị trung bình của “table” giữa các nhóm trong cùng một “clarity”. Các con số trung bình cụ thể được hiển thị trên các thanh cột để người đọc có thể dễ dàng nhận biết giá trị. Biểu đồ này giúp trực quan hóa sự phụ thuộc của giá trị trung bình của cột “table” đối với “cut” và “clarity” của kim cương, từ đó giúp phân tích mối quan hệ giữa các yếu tố này và phát hiện ra các mẫu hoặc xu hướng quan trọng. Qua đây ta thấy giá trị trung bình của mỗi lỗi thuộ các nhóm ổn định dao động trong khoảng 56 đến 60
Ví dụ:
Biểu đồ có thể cho thấy rằng các kim cương có mức độ rõ ràng “SI1” thường có giá trị trung bình của cột “table” cao hơn so với các kim cương khác khi cắt ở mức “Good”, nhưng lại thấp hơn đáng kể khi cắt ở mức “Very Good”. Điều này có thể gợi ý rằng có thể có sự tương tác phức tạp giữa cắt và mức độ rõ ràng đối với giá trị trung bình của cột “table”.
h%>% group_by(cut, clarity)%>%summarise(m=mean(depth))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~clarity)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'cut', y= 'Mean',title='Hình 1.16: Giá trị trung bình của depth theo cut và clarity ')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Giải thích
Biểu đồ này có tác dụng hiển thị giá trị trung bình của cột “depth” theo các nhóm được phân loại bởi cắt (cut) và rõ ràng (clarity) của kim cương. Các thanh cột được chia thành các nhóm theo “cut” và mỗi nhóm được phân tách dựa trên “clarity”. Mỗi thanh cột đại diện cho giá trị trung bình của cột “depth” cho từng nhóm.
Các nhóm được phân chia bởi “clarity” sẽ được hiển thị trên các panel khác nhau, giúp so sánh sự thay đổi của giá trị trung bình của “table” giữa các nhóm trong cùng một “clarity”. Các con số trung bình cụ thể được hiển thị trên các thanh cột để người đọc có thể dễ dàng nhận biết giá trị.
Biểu đồ này giúp trực quan hóa sự phụ thuộc của giá trị trung bình của cột “depth” đối với “cut” và “clarity” của kim cương, từ đó giúp phân tích mối quan hệ giữa các yếu tố này và phát hiện ra các mẫu hoặc xu hướng quan trọng. Qua đây ta thấy giá trị trung bình của mỗi lỗi thuộ các nhóm ổn định dao động trong khoảng 60 đến 64
Ý nghĩa của biểu đồ được tạo bởi mã này là để hiểu sự tương quan giữa cut, clarity và độ sâu của kim cương. Trong ngành công nghiệp kim cương, cut (cắt) và clarity (độ trong suốt) là hai yếu tố chính ảnh hưởng đến giá trị của một viên kim cương. Độ sâu (depth) cũng là một yếu tố quan trọng để đánh giá chất lượng của một viên kim cương. Biểu đồ sẽ giúp ta thấy liệu có sự tương quan giữa các yếu tố này không.
Ví dụ: nếu biểu đồ cho thấy rằng các cột biểu diễn độ sâu của kim cương (depth) thấp nhất đều nằm ở một nhóm cắt cụ thể và một độ trong suốt cụ thể, điều này có thể cho thấy rằng mối tương quan giữa cắt và clarity với độ sâu là đáng chú ý.
h%>% group_by(cut, clarity)%>%summarise(m=var(depth))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~clarity)+
geom_text(aes(label= round(m)), vjust=0, color='red')+ labs(x= 'cut', y= 'Var',title='Hình 1.17: Phương sai của depth theo cut và clarity')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Nhận xét biểu đồ
Tác dụng của biểu đồ này là hiển thị phương sai của cột “depth” theo các mức độ “cut” và “clarity”, cho ta cái nhìn về sự biến động của dữ liệu. Qua đây ta thấy được phương sai của mỗi nhóm color đều có xu hướng giảm dần từ Fair xuống Ideal
Suy ra, kiểu cắt kim cương ảnh hưởng đến mức độ chênh lệch của biến “carat”.Kim cương có kiểu cắt “Fair và Ideal” có mức đọ chênh lệch cao nhất về biến “carat” tức là có độ biến thiên cao nhất về kích thước carat. Điều này có nghĩa là kim cương trong nhóm “Fair và Ideal” có thể có kích thước carat chênh lệch nhau đáng kể.
h%>% group_by(cut, clarity)%>%summarise(m=mean(price))%>%ggplot(aes(x=cut, y= m))+
geom_col(position='dodge')+
facet_wrap(~clarity)+
geom_text(aes(label= round(m)), vjust=1, color='pink')+ labs(x= 'cut', y= 'Mean',title='Hình 1.18: Giá trị trung bình của price theo cut và clarity')
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
Giải thích
Biểu đồ có dạng cột, với các cột thể hiện giá trị trung bình của giá (price) cho từng nhóm cut và clarity. Biểu đồ được chia thành các mặt con theo các giá trị khác nhau của biến clarity. Mỗi mặt con hiển thị biểu đồ cột riêng cho một mức độ trong cụ thể, giúp so sánh giá trị trung bình của giá giữa các kiểu cắt trong cùng mức độ trong. Các cột được tô màu khác nhau để dễ dàng phân biệt các nhóm clarity. Giá trị trung bình của giá được hiển thị trên mỗi cột để giúp người đọc dễ dàng so sánh giá trị giữa các nhóm.
h%>% group_by(clarity,color)%>%summarise(m=mean(table))%>%ggplot(aes(x=clarity, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'cut', y= 'Mean',title='Hình 1.19: Giá trị trung bình của table theo clarity và color')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Giải thích
Biểu đồ này có tác dụng hiển thị giá trị trung bình của cột “table” theo các nhóm được phân loại bởi (color) và rõ ràng (clarity) của kim cương. Các thanh cột được chia thành các nhóm theo “color” và mỗi nhóm được phân tách dựa trên “clarity”. Mỗi thanh cột đại diện cho giá trị trung bình của cột “table” cho từng nhóm.
Các nhóm được phân chia bởi “clarity” sẽ được hiển thị trên các panel khác nhau, giúp so sánh sự thay đổi của giá trị trung bình của “table” giữa các nhóm trong cùng một “clarity”. Các con số trung bình cụ thể được hiển thị trên các thanh cột để người đọc có thể dễ dàng nhận biết giá trị.
Biểu đồ này giúp trực quan hóa sự phụ thuộc của giá trị trung bình của cột “table” đối với “color” và “clarity” của kim cương, từ đó giúp phân tích mối quan hệ giữa các yếu tố này và phát hiện ra các mẫu hoặc xu hướng quan trọng.
Qua đây ta thấy giá trị trung bình của mỗi loại trong Cột Clarity thuộc các nhóm ổn định dao động trong khoảng 56 đến 5959
Ý nghĩa của biểu đồ được tạo bởi mã này là để hiểu sự tương quan giữa color, clarity và table của kim cương. Trong ngành công nghiệp kim cương, color và clarity (độ trong suốt) là hai yếu tố chính ảnh hưởng đến giá trị của một viên kim cương. Biểu đồ sẽ giúp ta thấy liệu có sự tương quan giữa các yếu tố này không.
h%>% group_by(clarity,color)%>%summarise(m=var(table))%>%ggplot(aes(x=clarity, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'clarity', y= 'Var',title='Hình 1.20: Phương sai của table theo clarity và color ')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Giải thích
Đoạn mã trên sẽ giúp bạn trực quan hóa dữ liệu một cách dễ dàng và cung cấp thông tin . Nó sẽ tạo ra một biểu đồ cột, mỗi cột biểu diễn cho một cặp “clarity” và “color”, với chiều cao của cột tương ứng với phương sai của biến “table”. Bạn cũng có thể thấy các giá trị phương sai được hiển thị trên biểu đồ, giúp bạn so sánh dễ dàng hơn giữa các nhóm. Phương sai của biểu đồ trên không có dộ chenh lệch lớn giữa các loại.
Nếu kết quả từ biểu đồ cho thấy các cặp clarity và color có phương sai của biến “table” khác biệt lớn, bạn có thể kết luận rằng có mối quan hệ giữa độ trong suốt và màu sắc của kim cương đối với đặc điểm “table”. Điều này có thể cung cấp thông tin hữu ích cho việc lựa chọn kim cương trong các ứng dụng khác nhau, như trong ngành công nghiệp trang sức.
h%>% group_by(clarity,color)%>%summarise(m=var(depth))%>%ggplot(aes(x=clarity, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=0, color='red')+ labs(x= 'clarity', y= 'Var',title='Hình 1.21: Phương sai của depth theo clarity và color')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Nhận xét biểu đồ
Tác dụng của biểu đồ này là hiển thị phương sai của cột “depth” theo các mức độ “clarity” và “color”, cho ta cái nhìn về sự biến động của dữ liệu. Qua đây ta thấy được phương sai của mỗi nhóm color đều có xu hướng giảm dần từ I1 xuống IF
Suy ra, kiểu cắt kim cương ảnh hưởng đến mức độ chênh lệch của biến “carat”.Kim cương có kiểu cắt “Fair và Premiuml” có mức đọ chênh lệch cao nhất về biến “carat” tức là có độ biến thiên cao nhất về kích thước carat. Điều này có nghĩa là kim cương trong nhóm “Fair và Premium” có thể có kích thước carat chênh lệch nhau đáng kể.
h%>% group_by(clarity,color)%>%summarise(m=mean(depth))%>%ggplot(aes(x=clarity, y= m))+
geom_col(position='dodge')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=2, color='pink')+ labs(x= 'clarity', y= 'Meann',title='Hình 1.22: Giá trị trung bình của depth theo clarity và color')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Nhận xét biểu đồ
Biểu đồ thể hiện mối quan hệ giữa độ trong suốt (Clarity) và độ sâu trung bình (Mean Depth) của đá quý, phân theo màu sắc (Color). Mỗi thanh màu đại diện cho độ sâu trung bình của đá quý có cùng độ trong suốt và màu sắc. Có thể quan sát thấy sự khác biệt về độ sâu trung bình giữa các độ trong suốt khác nhau trong cùng một màu sắc. Có thể có sự tương quan hoặc không tương quan giữa độ trong suốt và độ sâu trung bình tùy thuộc vào loại đá quý cụ thể. Chú thích trên mỗi thanh hiển thị giá trị trung bình được làm tròn đến hai chữ số thập phân. Qua biểu đồ trên ta thầy được giá trị trung bình của độ sâu (depth) khá là ổn định dao động trong khoảng 61-64
h%>% group_by(clarity,color)%>%summarise(m=mean(price))%>%ggplot(aes(x=clarity, y= m))+
geom_col(position='dodge',fill='black')+
facet_wrap(~color)+
geom_text(aes(label= round(m)), vjust=0, color='red')+ labs(x= 'clarity', y= 'Mean',title='Hình 1.23: Giá trị trung bình của price theo clarity và color')
## `summarise()` has grouped output by 'clarity'. You can override using the
## `.groups` argument.
Nhận xét biểu đồ
h %>%: Sử dụng toán tử pipe (%>%) trong gói dplyr để áp dụng các lệnh tiếp theo cho một khung dữ liệu (thường được biểu thị bằng h).
group_by(clarity, color): Chia khung dữ liệu thành các nhóm dựa trên hai yếu tố: clarity (độ tinh khiết) và color (màu sắc). Cho phép tính toán thống kê tóm tắt trong từng nhóm.
summarise(m = mean(price)): Tính toán giá trị trung bình của biến price trong mỗi nhóm, gán kết quả cho biến mới m.
ggplot(aes(x = clarity, y = m)): Tạo một đối tượng ggplot để xây dựng các dạng trực quan hóa. Hàm aes() ánh xạ biến clarity sang trục x và giá trị m (giá trị trung bình) được tính toán sang trục y.
geom_col(position = ‘dodge’, fill = ‘black’): Thêm lớp biểu đồ thanh (geom_col) vào ggplot. position = ‘dodge’ đảm bảo các thanh cho các nhóm color khác nhau được đặt cạnh nhau mà không chồng lấn. fill = ‘black’ đặt màu của các thanh thành đen.
facet_wrap(~ color): Chia nhỏ biểu đồ thành các phần dựa trên các nhóm color. Mỗi phần hiển thị biểu đồ thanh cho một nhóm color cụ thể.
geom_text(aes(label = round(m)), vjust = 2, color = ‘red’): Thêm chú thích văn bản vào các thanh. aes() chỉ định văn bản label là giá trị được làm tròn của m (giá trị trung bình). vjust = 2 điều chỉnh vị trí dọc của văn bản cao hơn các thanh một chút để hiển thị rõ ràng hơn. color = ‘red’ đặt màu văn bản thành đỏ.
labs(x = ‘clarity’, y = ‘Mean’, title = ‘Hình 1.23’): Thêm nhãn cho trục x (‘clarity’), trục y (‘Mean’) và tiêu đề chung cho biểu đồ (‘Hình 1.23’)
Nhằm mục đích tạo ra một biểu đồ cột đa biến để so sánh giá trị trung bình của cột price dựa trên các nhóm clarity và color, với việc thêm chú thích văn bản cho từng cột và phân chia biểu đồ thành các phần nhỏ dựa trên màu sắc
k<- h %>% group_by(cut, color) %>% summarise(n = n())
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
k %>% ggplot(aes(x = cut, y = n)) +
geom_col(data = k %>% filter(color == 'D'), fill = 'pink') +
geom_col(data = k %>% filter(color == 'J'), fill = 'brown')+labs(title='Hình 1.24')
Giải thích
g<- h %>% group_by(cut, clarity) %>% summarise(n = n())
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
g %>% ggplot(aes(x = cut, y = n)) +
geom_col(data = g %>% filter(clarity == 'SI2'), fill = 'black') +
geom_col(data = g %>% filter(clarity == 'VS1'), fill = 'brown') +labs(title='Hình 1.25')
Nhận xét kết quả
Nhóm dữ liệu: Dữ liệu được nhóm theo hai biến: “cut” và “clarity”. Điều này có nghĩa là dữ liệu được phân chia thành các nhóm dựa trên giá trị của hai biến này. Tổng hợp số lượng mẫu: Sau khi dữ liệu được nhóm, tổng số lượng mẫu trong mỗi nhóm được tính toán bằng hàm summarise() và lưu vào một biến mới được đặt tên là n. Tạo biểu đồ cột: Sử dụng gói ggplot2, một biểu đồ cột được tạo ra. Trục x của biểu đồ là các loại “cut”, và trục y là số lượng mẫu. Hai cột được vẽ, mỗi cột đại diện cho một màu sắc: “H” và “E”. Cột màu brown đại diện cho màu “E”, trong khi cột màu đen đại diện cho màu “H”.
Qua biểu đồ trên ta nhìn thấy tổng số lượng của color ‘E’ chiếm ưu thế hơn so với color ‘H’ trong tất các loại qua đó ta có cái nhìn tổng quan hơn về phân phối của chúng trong các loại của cột Cut. Giúp cho chúng ta trong việc phân tích và hiểu rõ hơn về độ trong suốt của các loại kim cương.
p<- h %>% group_by(color, clarity) %>% summarise(n = n())
## `summarise()` has grouped output by 'color'. You can override using the
## `.groups` argument.
p %>% ggplot(aes(x = color, y = n)) +
geom_col(data = p %>% filter(clarity == 'SI2'), fill = 'pink') +
geom_col(data = p %>% filter(clarity == 'VS1'), fill = 'brown') +labs(title='Hình 1.26')
Nhận xét biểu đồ
Bước này tính toán số lượng quan sát (số lần xuất hiện) của mỗi tổ hợp “color” và “clarity” trong tập dữ liệu.
Biểu đồ hình cột được tạo ra, với trục hoành thể hiện “màu sắc” và trục tung thể hiện số lượng quan sát (số lần xuất hiện) của mỗi tổ hợp ” color ” và “clarity”.
Hai nhóm thanh riêng biệt được thêm vào biểu đồ: Nhóm thanh màu hồng: Hiển thị số lượng quan sát (số lần xuất hiện) của các đối tượng có “clarity” là “SI2” cho từng “color”. Nhóm thanh màu nâu: Hiển thị số lượng quan sát (số lần xuất hiện) của các đối tượng có “clarity” là “VS1” cho từng “color”.
Qua biểu đồ trên chẳng hạn như ở cột E ta thấy có 2 màu thì màu brown chiếm ưu thế hơn so với màu hồng tức là độ trong suốt clarity SI2 chiếm tỷ lên ít hơn so với VS1
o <- h %>% mutate(caratC = cut(carat,5, label = c('rất nhỏ', 'nhỏ','vừa','lớn','rất lớn')))
o %>% ggplot(aes(x = caratC)) +
geom_bar(fill = 'yellow')+labs(title='Hình 1.2727')
Giải thích câu lệnh
Nhận xét Kết quả
Đây là một dạng biểu đồ dạng Bar_Chart nói số lượng của cột CaratC vừa mới tạo trong được gán vào biến o. Biểu đồ thanh này cho thấy sự phân bố của các viên kim cương dựa trên kích thước carat của chúng, được chia thành 5 nhóm: “rất nhỏ”, “nhỏ”, “vừa”, “lớn” và “rất lớn”. Chiều cao của mỗi thanh biểu thị số lượng viên kim cương trong nhóm kích thước carat tương ứng.
Nhóm “vừa” là nhóm phổ biến nhất.Nhóm “rất nhỏ” và “rất lớn” là nhóm ít phổ biến nhất.Có sự phân bố tương đối đồng đều giữa các nhóm “nhỏ”, “vừa” và “lớn”.Số lượng kim cương có xu hướng giảm dần theo kích thước.Kim cương có kích thước “rất nhỏ” chiếm số lượng lớn nhất cụ thể là , tiếp theo là “nhỏ”, “vừa” và “lớn”.Kim cương “rất lớn” có số lượng ít nhất.
Ví dụ:Giả sử biểu đồ thanh cho thấy nhóm “vừa” có chiều cao cao nhất. Điều này có nghĩa là có nhiều viên kim cương thuộc nhóm kích thước carat này hơn so với các nhóm khác. Ngược lại, nhóm “rất nhỏ” có chiều cao thấp nhất, cho thấy số lượng viên kim cương trong nhóm này ít hơn so với các nhóm khác.
h%>% group_by(cut) %>% summarise(m= mean(carat)) %>%
ggplot(aes(x = cut,y = m)) +
geom_col(position = 'dodge') +
geom_text(aes(label = round(m,2)), vjust = 2, color = 'pink') +
labs(x = 'cut', y = 'Mean',title='Hình 1.28: Giá trị trung bình của carat theo biến cut')
Giải thích câu lệnh
Tóm tắt:
Đây là đoạn mã sử dụng thư viện ggplot2 trong R để tạo biểu đồ cột thể hiện mối quan hệ giữa màu sắc (cut) và giá trị trung bình của trọng lượng (carat) kim cương. Biểu đồ được tùy chỉnh với các cột xếp cạnh nhau, nhãn văn bản màu hồng làm tròn đến 2 chữ số thập phân, và nhãn trục được đặt tên theo ý nghĩa.
Nhận xét kết quả
h%>% group_by(cut) %>% summarise(m= median(carat)) %>%
ggplot(aes(x = cut,y = m)) +
geom_col(position = 'dodge') +
geom_text(aes(label = round(m,2)), vjust = 2, color = 'pink') +
labs(x = 'cut', y = 'Median',title='Hình 1.29: Trung vị của carat theo biến cut')
Nhận xét kết quả
Chất lượng cắt “Ideal” (hoàn hảo): cột “Ideal” thấp nhất trong biểu đồ. Điều này có nghĩa là kim cương có chất lượng cắt hoàn hảo có trung vị trọng lượng carat thấp nhất. Ví dụ, chú thích trên cột “Ideal” có thể hiển thị giá trị 0.54 carat, cho biết nửa số kim cương có chất lượng cắt hoàn hảo có trọng lượng carat thấp hơn 0.54 carat, và nửa còn lại có trọng lượng carat cao hơn 0.54 carat.
Chất lượng cắt “Fair” (kém): cột “Fair” cao nhất trong biểu đồ. Điều này có nghĩa là kim cương có chất lượng cắt kém có trung vị trọng lượng carat cao nhất. Ví dụ, chú thích trên cột “Fair” có thể hiển thị giá trị 1 carat, cho biết nửa số kim cương có chất lượng cắt kém có trọng lượng carat thấp hơn 1 carat, và nửa còn lại có trọng lượng carat cao hơn 1 carat.
b <- h%>% group_by(cut, color) %>% summarise(n = n())
## `summarise()` has grouped output by 'cut'. You can override using the `.groups`
## argument.
b %>% ggplot(aes(x = cut, y = n)) +
geom_col(data = b %>% filter(color == 'E'), fill = 'pink') +
geom_col(data = b %>% filter(color == 'H'), fill = 'black')+labs(title='Hình 1.30: Tổng số lượng kim cương theo biến cut mà color')
Nhận xét biểu đồ
Nhóm dữ liệu: Dữ liệu được nhóm theo hai biến: “cut” và “color”. Điều này có nghĩa là dữ liệu được phân chia thành các nhóm dựa trên giá trị của hai biến này. Tổng hợp số lượng mẫu: Sau khi dữ liệu được nhóm, tổng số lượng mẫu trong mỗi nhóm được tính toán bằng hàm summarise() và lưu vào một biến mới được đặt tên là n. Tạo biểu đồ cột: Sử dụng gói ggplot2, một biểu đồ cột được tạo ra. Trục x của biểu đồ là các loại “cut”, và trục y là số lượng mẫu. Hai cột được vẽ, mỗi cột đại diện cho một màu sắc: “E” và “H”. Cột màu hồng đại diện cho màu “E”, trong khi cột màu đen đại diện cho màu “H”. Tiêu đề của biểu đồ: Tiêu đề của biểu đồ được đặt là “Hình 1.30”.
Qua biểu đồ trên ta nhìn thấy tổng số lượng của color ‘H’ chiếm ưu thế hơn so với color ’E trong tất các loại. Qua đó ta có cái nhìn tổng quan hơn về phân phối của chúng trong các loại của cột Cut. Giúp cho chúng ta trong việc phân tích và hiểu rõ hơn về màu sắc của các loại kim cương.