## 'data.frame': 1000 obs. of 21 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ battery_power: int 1043 841 1807 1546 1434 1464 1718 833 1111 1520 ...
## $ blue : int 1 1 1 0 0 1 0 0 1 0 ...
## $ clock_speed : num 1.8 0.5 2.8 0.5 1.4 2.9 2.4 2.4 2.9 0.5 ...
## $ dual_sim : int 1 1 0 1 0 1 0 1 1 0 ...
## $ fc : int 14 4 1 18 11 5 1 0 9 1 ...
## $ four_g : int 0 1 0 1 1 1 0 0 1 0 ...
## $ int_memory : int 5 61 27 25 49 50 47 62 25 25 ...
## $ m_dep : num 0.1 0.8 0.9 0.5 0.5 0.8 1 0.8 0.6 0.5 ...
## $ mobile_wt : int 193 191 186 96 108 198 156 111 101 171 ...
## $ n_cores : int 3 5 3 8 6 8 2 1 5 3 ...
## $ pc : int 16 12 4 20 18 9 3 2 19 20 ...
## $ px_height : int 226 746 1270 295 749 569 1283 1312 556 52 ...
## $ px_width : int 1412 857 1366 1752 810 939 1374 1880 876 1009 ...
## $ ram : int 3476 3895 2396 3893 1773 3506 3873 1495 3485 651 ...
## $ sc_h : int 12 6 17 10 15 10 14 7 11 6 ...
## $ sc_w : int 7 0 10 0 8 7 2 2 9 0 ...
## $ talk_time : int 2 7 10 7 7 3 10 18 10 5 ...
## $ three_g : int 0 1 0 1 1 1 0 0 1 1 ...
## $ touch_screen : int 1 0 1 1 0 1 0 1 1 0 ...
## $ wifi : int 0 0 1 0 1 1 0 1 0 1 ...
Đây là dữ liệu bán hàng của các điện thoại di động từ các công ty khác nhau với bộ dữ liệu có 21 biến và 1000 quan sát sác biến đươc thể hiện như sau
id:ID
battery_power:Tổng năng lượng mà một viên pin có thể lưu trữ trong một lần đo được tính bằng mAh (milliampere-hour).
blue: Đth có bluetooth hay không
clock_speed: Tốc độ mà bộ máy xử lý thực hiện các lệnh.
dual_sim: Có hỗ trợ SIM kép hay không
fc :Số điểm ảnh (megapixel) của camera trước.
four_g có 4G hay không
int_memory:Bộ nhớ trong tính bằng đơn vị Gigabyte.
m_dep: Độ dày của điện thoại di động tính bằng đơn vị centimet.
mobile_wt:Trọng lượng của điện thoại di động
n_cores:Số lõi của bộ xử lý
pc: Số điểm ảnh chính (megapixel) của camera
px_height:Độ phân giải theo chiều cao của pixel
px_width:Độ phân giải theo chiều rộng của pixel
ram:Bộ nhớ truy cập ngẫu nhiên (RAM) tính bằng đơn vị Megabyte
sc_h:Chiều cao màn hình của điện thoại di động tính bằng đơn vị centimet.
sc_w: Chiều rộng màn hình của điện thoại di động tính bằng đơn vị centimet.
talk_time: Thời gian dài nhất mà một lần sạc pin có thể kéo dài khi bạn sử dụng.
three_g: Cói 3G hay không
touch_screen :Có màn hình cảm ứng hay không
wifi:Có Wifi hay không
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── 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
phone %>% ggplot(aes(x = battery_power,)) +
geom_histogram(binwidth = 50, fill = 'DARKGREEN', color = 'BLACK') #độ rộng của các khoảng
***
phone %>%
ggplot(aes(x = battery_power)) +
geom_histogram(binwidth = 50, fill = "#CCFFFF", color = '#006666') +
facet_wrap(~ dual_sim) +
labs(
title = "BIỂU ĐỒ NĂNG LƯƠNG PIN CỦA ĐIỆN THOẠI CHIA THEO SIM",
x = "Battery Power",
y = "Frequency"
)
***
phone %>%
ggplot(aes(x = clock_speed)) +
geom_density(fill = "#FFCCCC", color = '#4575B4') +
# Đánh số thứ tự cho mỗi câu lệnh khi xuống dòng
labs(
title = "Density Plot of Clock Speed",
x = "Clock Speed",
y = "Density"
)library(tidyverse)
phone %>%
ggplot(aes(x = clock_speed)) +
geom_density(fill = "#EED5B7", color = '#8B7D6B') +
facet_wrap(~ dual_sim) +
# Đánh số thứ tự cho mỗi câu lệnh khi xuống dòng
labs(
title = "Density Plot of Clock Speed",
x = "Clock Speed",
y = "Density"
)phone %>% group_by(m_dep) %>% summarise(n = n()) %>%
ggplot(aes(x = '', y = n,fill = m_dep)) +
geom_col() +
geom_text(aes(label = n),position = position_stack(vjust = 1))label = n có nghĩa là bạn đang sử dụng giá trị n (tương ứng với số lượng hoặc một giá trị được tính toán khác) để làm nhãn cho mỗi điểm.
position = position_stack(vjust = 1): Điều này xác định vị trí của văn bản trên biểu đồ. Trong trường hợp này, position_stack được sử dụng để xếp chồng văn bản trên nhau theo chiều dọc. Điều chỉnh vjust = 1 đặt văn bản ở phía trên của mỗi “stack” (xếp chồng). Trong một số trường hợp, nó có thể được điều chỉnh để đảo ngược vị trí, đặt văn bản ở phía dưới (vjust = 0), hoặc căn giữa (vjust = 0.5)
phone %>% group_by(n_cores) %>% summarise(n = n()) %>%
ggplot(aes(x = '', y = n,fill = n_cores)) +
geom_col() +
coord_polar('y')
***
* Đây là một layer (lớp) trong ggplot2 để vẽ biểu đồ violin. Biểu đồ
violin thường được sử dụng để biểu diễn phân phối của một biến liên tục
hoặc hai biến liên tục dưới dạng một biểu đồ violin. Mỗi violin biểu
diễn phân phối của dữ liệu
phone %>%
ggplot(aes(x = wifi, y = m_dep, fill = factor(wifi))) +
geom_boxplot()+
labs(
x = "CÓ WIFI HAY KHÔNG",
y = "ĐỘ DÀY CỦA ĐIỆN THOẠI"
)phone %>%
ggplot(aes(x = factor(dual_sim), y = clock_speed, fill = factor(dual_sim))) +
geom_violin()
***
phone %>%
ggplot(aes(x = clock_speed, y = m_dep, color = factor(m_dep))) +
geom_line() +
labs(
title = "BIỂU ĐỒ ĐƯỜNG THỂ HIỆN TỐC ĐỘ XỬ LÍ THEO ĐỘ DÀY CỦA ĐIỆN THOẠI",
x = "TỐC ĐỘ XỬ LÍ",
y = "ĐỘ DÀY CỦA ĐIỆN THOẠI"
) phone %>%
ggplot(aes(x = clock_speed, y = m_dep)) +
geom_tile(aes(fill = ram)) +labs(
x = "TỐC ĐỘ VI XỬ LÍ ",
y = "ĐỘ DÀY CỦA ĐIỆN THOẠI"
)Các ô có màu sắc khác nhau trên biểu đồ heatmap có thể chỉ ra mối liên hệ giữa tốc độ vi xử lý, độ dày của điện thoại và dung lượng RAM. Ví dụ, nếu có một khu vực trên biểu đồ có màu sắc tương đối đậm, điều này có thể ngụ ý rằng có một tập hợp các điện thoại có tốc độ vi xử lý cao, độ dày lớn và dung lượng RAM lớn.
phone %>%
ggplot(aes(x = factor(dual_sim), y = clock_speed)) +
geom_point() +
geom_errorbar(aes(ymin = clock_speed - 0.1, ymax = clock_speed + 0.1), width = 0.2)ymin và ymax là độ cao tối thiểu và tối đa của dấu gạch ngang trên đỉnh của cột bar. Dùng clock_speed - 0.1 và clock_speed + 0.1 để xác định khoảng cách từ giá trị trung bình clock_speed xuống và lên một khoảng nhất định.
width = 0.2: Đây là độ rộng của dấu gạch ngang. Trong trường hợp này, nó chỉ ra rằng dấu gạch ngang sẽ có chiều rộng là 0.2 đơn vị.
Mỗi điểm trên biểu đồ đại diện cho một quan sát trong dữ liệu phone. Vị trí của mỗi điểm trên trục x phụ thuộc vào trạng thái của tính năng sim kép, và vị trí trên trục y tương ứng với tốc độ xử lý.
phone %>%
ggplot(aes(x = factor(m_dep), y = clock_speed)) +
geom_point(position = position_jitter(width = 0.2))geom_point(position = position_jitter(width = 0.2)): Đây là layer thêm vào biểu đồ để vẽ các điểm dữ liệu. Tuy nhiên, với tham số position_jitter, các điểm trên trục x được thêm sự biến động ngẫu nhiên với chiều rộng là 0.2, giúp tránh trùng lắp giữa các điểm dữ liệu và làm cho biểu đồ dễ đọc hơn.
Biểu đồ này sẽ hiển thị mối quan hệ giữa dày độ của điện thoại và tốc độ xử lý, trong đó sâu độ được chuyển đổi thành factor trên trục x và tốc độ xử lý trên trục y. Sự biến động ngẫu nhiên được thêm vào trục x để tránh các điểm dữ liệu trùng lắp.
ggplot(phone, aes(x = m_dep, y = touch_screen, fill = ram)) +
geom_area() +
scale_fill_gradient(low = "green", high = "yellow") +
labs(title = "Biểu đồ Area Plot với Màu Gradient", x = "Mobile Depth", y = "Touch Screen", fill = "RAM")ggplot(phone, aes(x = clock_speed, y = mobile_wt, color = wifi)) +
geom_point() +
labs(title = "Trọng lượng di động theo Tốc độ xử lý với Wi-Fi", x = "Tốc độ xử lý", y = "Trọng lượng di động", color = "Wi-Fi")ggplot(phone, aes(x = clock_speed, fill = touch_screen)) +
geom_density(alpha = 0.5) +
labs(title = "Tốc độ xử lý theo Trạng thái màn hình cảm ứng", x = "Tốc độ xử lý", fill = "Màn hình cảm ứng")## Warning: The following aesthetics were dropped during statistical transformation: fill.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
***
library(tidyverse)
phone %>% ggplot(aes(x = wifi,)) +
geom_bar(binwidth = 50, fill = 'pink', color = 'yellow')## Warning in geom_bar(binwidth = 50, fill = "pink", color = "yellow"): Ignoring
## unknown parameters: `binwidth`
***