Pages

Wednesday, November 22, 2017

Biểu đồ cơ bản với R

Một trong những điểm mạnh nhất của R, khi so với các ngôn ngữ lập trình khác, đó là ta có thể dễ dàng tạo ra các biểu đồ chất lượng cao một cách dễ dàng. Trong bài viết này, chúng ta sẽ học về các biểu đồ cơ bản trong R. Chúng ta còn có các thư viện đồ thị nâng cao khác nhưng sẽ không được đề cập đến ở đây đó là lattice, ggplot2, và ggvis. Ta có thể tham khảo bài viết theo hướng tiếp cận khác với ggplot2. Xem thêm ở link sau: http://varianceexplained.org/r/teach_ggplot2_to_beginners/



Đầu tiên chúng ta cần load dữ liệu data frame về xe hơi vào không gian làm việc.
1
data(cars)
Mục tiêu chính của chúng ta ở đây là giới thiệu các hàm đồ thị và các đối số tương ứng của chúng. Biểu đồ xuất ra sẽ thú vị hơn nếu ta có nhiều dữ liệu và phức tạp.
Tập dữ liệu về cars có hai biến: speed và stopping distance được thu thập từ những năm 1920. Trước khi áp dụng các hàm biểu đồ, ta nên xem qua để cảm nhận tập dữ liệu hiện tại như thế nào.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# quan sát 6 dòng dữ liệu đầu tiên
  head(cars)
  speed dist
1     4    2
2     4   10
3     7    4
4     7   22
5     8   16
6     9   10
# kiểm tra số chiều dữ liệu
dim(cars)
[1] 50  2
# liệt kê danh sách các thuộc tính
names(cars)
[1] "speed" "dist"
# tổng hợp thông tin của bảng dữ liệu
     summary(cars)
     speed           dist      
 Min.   : 4.0   Min.   :  2.00 
 1st Qu.:12.0   1st Qu.: 26.00 
 Median :15.0   Median : 36.00 
 Mean   :15.4   Mean   : 42.98 
 3rd Qu.:19.0   3rd Qu.: 56.00 
 Max.   :25.0   Max.   :120.00
Bây giờ, chúng ta thử dùng hàm plot() để chấm điểm các dòng dữ liệu ra màn hình.
1
plot(cars)
Chấm điểm dữ liệu của cars
Chấm điểm dữ liệu của cars
Như thường lệ, R sẽ cố gắng tốt nhất có thể để phân tích đối số đưa vào hàm plot(). Đầu tiên, R sẽ để ý rằng data frame bạn đưa vào có hai cột, vì vậy R giả định rằng bạn muốn chấm điểm dữ liệu dựa trên quan hệ của hai cột thuộc tính này. Thứ hai, khi bạn không chỉ định cụ thể tên của các tọa độ, R sẽ sử dụng tên của các cột dữ liệu. Thứ ba, R sẽ tạo các tọa độ với các số trên trục tọa độ sao cho cân đối nhất. Và thứ tư, R sử dụng những giá trị mặc định trong hàm plot() để hiển thị biểu đồ như hình trên.
Tiếp theo chúng ta sẽ tùy biến các đối số đầu vào của hàm plot()
1
2
# chỉ định trục tọa độ x, y và nhãn tương ứng cho hai trục tọa độ này
plot(x = cars$speed, y = cars$dist, xlab = "Speed", ylab = "Stopping Distance")
Chấm điểm dữ liệu với các thông số đầu vào
Chấm điểm dữ liệu với các thông số đầu vào
Dưới đây, ta sẽ thêm các thông số về tiêu đề (title), phụ đề (sub-title), và hình dáng của biểu đồ.
1
2
3
4
5
6
# main: tiêu đề của biểu đồ là My Plot
# sub: phụ đề của biểu đồ là My Plot Subtitle
# col: màu sắc của chấm điểm là màu đỏ
# xlim: giới hạn hiển thị của trục x trong đoạn 10 đến 15
# pch: thay đổi hình dạng của chấm điểm thành tam giác
plot(cars, main = "My Plot", sub = "My Plot Subtitle", col = 2, xlim = c(10, 15), pch = 2)
Hiệu chỉnh thông số hàm plot()
Hiệu chỉnh thông số hàm plot()
Tiếp theo, chúng ta sẽ tìm hiểu về hàm boxplot() cho tập dữ liệu mtcars.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
data(mtcars)
# quan sát 6 dòng dữ liệu đầu tiên
head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# kiểm tra số chiều dữ liệu
dim(mtcars)
[1] 32 11
# liệt kê danh sách các thuộc tính
names(mtcars)
[1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
[11] "carb"
# tổng hợp thông tin của bảng dữ liệu
  summary(mtcars)
mpg             cyl             disp             hp      
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0 
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5 
 Median :19.20   Median :6.000   Median :196.3   Median :123.0 
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7 
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0 
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0 
      drat             wt             qsec             vs       
 Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000 
 1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000 
 Median :3.695   Median :3.325   Median :17.71   Median :0.0000 
 Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375 
 3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000 
 Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000 
       am              gear            carb     
 Min.   :0.0000   Min.   :3.000   Min.   :1.000 
 1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000 
 Median :0.0000   Median :4.000   Median :2.000 
 Mean   :0.4062   Mean   :3.688   Mean   :2.812 
 3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000 
 Max.   :1.0000   Max.   :5.000   Max.   :8.000
Thay vì chỉ định cụ thể các cột dữ liệu cho đối số đầu vào cho hàm boxplot(), ta làm tương tự như hàm plot(), chỉ cần truyền vào đối số là toàn bộ dữ liệu mtcars để R làm phần việc còn lại.
1
boxplot(mtcars)
boxplot toàn bộ dữ liệu mtcars
boxplot toàn bộ dữ liệu mtcars
boxplot(), như các hàm khác trong R, cũng có đối số “formula”, được biểu diễn bởi toán tử “~” để biểu thị mối quan hệ giữa các thuộc tính đầu vào. Để biểu diễn mối quan hệ giữa mpg (miles per gallon) và cyl (number of cylinders) ta có thể làm như sau mpg ~ cyl.
1
boxplot(formula = mpg ~ cyl, data = mtcars)
boxplot mpg và cyl
boxplot mpg và cyl
Ở biểu đồ trên thuộc tính mpg nằm ở trục hoành còn cyl đặt ở trục tung. Chú ý rằng, ta có thể hiệu chỉnh các thông số tương tự như hàm plot() như title hay color cho biểu đồ trên.
Khi quan sát trên một thuộc tính, histograms là một công cụ hữu dụng. Ta chỉ cần truyền vào hàm hist() thuộc tính muốn biểu thị:
1
hist(mtcars$mpg)
Histogram
Histogram
Qua bài viết này, ta đã biết cách làm việc với các biểu đồ cơ bản trong R. Điểm tốt nhất để tiếp tục từ bài viết này là nghiên cứu về package ggplot2. Trang web sau sẽ giúp ích cho bạn để tìm hiểu sâu hơn về package này. http://www.ling.upenn.edu/~joseff/rstudy/week4.html
Nguồn tham khảo: http://swirlstats.com/
Nguồn: https://ongxuanhong.wordpress.com/2015/07/13/lap-trinh-voi-r-bieu-do-co-ban/
Updated: dữ liệu (cars) là có sẵn khi cài R.
Updated: Có nguồn nói nên học ggplot2 trước. Link: http://varianceexplained.org/r/teach_ggplot2_to_beginners/