logo xDuLieu.com

Trang trướcVẽ một số biểu đồ thông dụngTrang sau

Bên cạnh biểu đồ xy được vẽ bằng hàm plot, ta còn có thể thực hiện nhiều loại biểu đồ khác. Trong phần này, ta khảo sát một số dạng thông dụng.

Biểu đồ hộp

 

Biểu đồ hộp dùng để biểu diễn sự phân phối của một tập hợp số với các số tứ phân và các giá trị khác có liên quan. Dạng của biểu đồ hộp và các thành phần của biểu đồ này được thể hiện trên Hình 1.

minTP1TVTP3RâuNgoại lệchmaxIQRR

Hình 1 Các thành phần của biểu đồ hộp

Qua Hình 1, ta thấy biểu đồ hộp gồm các thành phần chính sau:

  • min, max : giá trị thấp nhất và giá trị cao nhất của tập hợp số,
  • TP1, TP3 : số tứ phân thứ nhất và thứ ba,
  • TV : số tứ phân thứ hai hay trung vị,
  • Giữa số tứ phân thứ 1 và thứ 3 là một hình chữ nhật ("hộp"), trong có một vạch đậm tại trung vị. Khoảng cách giữa hai số này được gọi là khoảng liên tứ phân (Interquartile range hay IQR)
  • Ở hai phía của hộp, ta có hai "râu" (whisker), nối từ số tứ phân đến một vị trị xa nhất X.
  • Các số nằm bên ngoài các râu được gọi là số ngoại lệch (outlier) do có sự khác biệt đáng kể so với các số liệu còn lại.
  • R là chiều dài của râu. Đó là tích của IQR với một hệ số được gọi là chiều dài tương đối của râu.

Để vẽ biểu đồ hộp, ta sử dụng hàm boxplot với các đối số sau:

  • x : số liệu dùng để vẽ biểu đồ hộp,
  • range : chiều dài tương đối của râu, giá trị mặc định là 1,5. Nếu giá trị này là 0, râu sẽ được kéo dài đến giá trị lớn nhất hay nhỏ nhất
  • outline : nếu giá trị đối số này là TRUE (mặc định), các số ngoại lệch sẽ được trình bày. Nếu đối số này là FALSE, các điểm ngoại lệch bị loại bỏ.
  • border : màu sắc của nét vẽ. (col thể hiện màu tô của hộp)
  • horizontal : phương của biểu đồ hộp, giá trị mặc định là FALSE (phương thẳng đứng). Nếu đối số này là TRUE thì biểu đồ hộp được trình bày theo phương nằm ngang.

Đoạn lệnh và Hình 2 sau đây minh họa một số điểm trên.

> x1 <- sample.int(1000, 50, replace=T)
> x2 <- sample.int(200, 100, replace=T)
> x <- c(x1,x2)
> par(mar=c(1,3,1,1))
> boxplot(x, range=2, lwd=2, las=2)
> boxplot(x, range=2, lwd=2, las=2, border="red", col=5, outline=F)

Hình 2 Biểu đồ hộp

Trong đoạn lệnh trên, ba câu lệnh đầu tiên dùng để tạo tập hợp 150 số một cách ngẫu nhiên. Câu lệnh thứ tư liên quan đến việc chừa lề cho biểu đồ. Hai câu lệnh tiếp theo dùng để vẽ hai biểu đồ hộp. Lưu ý sự khác biệt của biểu đồ thứ hai so với biểu đồ thứ nhất sau khi xác lập lại ba đối số col, borderoutline.

Trong trường hợp ta phải vẽ nhiều biểu đồ hộp trên cùng một biểu đồ, phương pháp cũng tương tự: ta đưa thêm số liệu vào đối số dữ liệu x. Thí dụ ta muốn vẽ biểu đồ hộp cho ba thành phần của trái cây là protein, lipit và khoáng, ta sử dụng câu lệnh sau:

> boxplot(TraiCay$Protein_g, TraiCay$LipitTong_g, TraiCay$Khoang_g,
outline=F, names=c("Protein","Lipit","Khoáng"), ylab="Hàm lượng (%)",
col="grey88", border=2:4, lwd=2, las=2)

Kết quả thu được là Hình 3.

Hình 3 Biểu đồ hộp

Trong một số trường hợp, ta muốn vẽ một số biểu đồ hộp của biến y tùy thuộc vào giá trị của một biến x có kiểu dữ liệu yếu tố. Khi đó ta dùng cú pháp boxplot(y ~ x).


Biểu đồ thanh

 

Biểu đồ dạng thanh (thẳng đứng hay nằm ngang) là một trong các dạng biểu đồ phổ biến, thường dùng để so sánh số liệu. Biểu đồ này được vẽ bằng hàm barplot. Trong các trường hợp đơn giản, ta chỉ cần một đối số bắt buộc là dữ liệu dùng để vẽ ; các đối số khác thường dùng để đưa thêm nội dung hay trang trí thêm cho biểu đồ. Thí dụ biểu đồ trình bày doanh số của một công ty trong 4 quý được thể hiện qua đoạn lệnh sau và Hinh 4.

> DoanhSo <- c(2700,1200,1700,2100)
> barplot(DoanhSo, names=(c("Quý 1","Quý 2","Quý3","Quý 4")), ylim=c(0,3000),
col=5, las=1)

Hình 4 Biểu đồ thanh trình bày doanh số của một công ty

Trong trường hợp phức tạp hơn, số liệu gồm một số nhóm kết hợp lại với nhau. Thí dụ như doanh số của công ty được thực hiện bới 3 nhóm nhân viên như Bảng 1.

Bảng 1 Doanh số của công ty XYZ trong năm 2014

Quý 1 Quý 2 Quý 3 Quý 4
Nhóm A 1300 570 820 1040
Nhóm B 460 280 340 480
Nhóm C 940 350 540 580

Trước hết vì đối số của barplot phải là một vectơ hay một ma trận nên ta tạo ra một ma trận bằng cách kết hợp 3 vectơ chứa doanh số của 3 nhóm trong 4 quý bằng các lệnh sau:

> nhomA <- c(1800,1070,820,1540)
> nhomB <- c(460,280,340,480)
> nhomC <- c(940,350,540,580)
> DSom <- rbind(nhomA,nhomB,nhomC)

Sau đó ta đặt tên cho các chi tiết của ma trận này để lệnh barplot dùng các tên ấy ghi chú trên biểu đồ.

> colnames(DSom) <- c("Quý 1","Quý 2","Quý 3","Quý 4")
> rownames(DSom) <- c("Nhóm A","Nhóm B","Nhóm C")

Cuối cùng thực hiện lệnh barplot với các đối số cần thiết được điều chỉnh lại.

> barplot(DSom, beside=TRUE, col=2:4, legend=TRUE, ylim=c(0,2000), las=1)

Kết quả được thể hiện trên Hình 5.

Hình 5 Biểu đồ thanh trình bày doanh số của một công ty

Trong lệnh vẽ barplot ở trên, ngoài các đối số mà ta đã biết như col, las, ta cần lưu ý thêm:

  • beside : xác lập cách sắp xếp các thanh trong một nhóm. Nếu beside = TRUE, các thanh trong cùng một nhóm được đặt cạnh nhau ; nếu beside = FALSE (giá trị mặc định), các thanh trong cùng một nhóm sẽ đặt chồng lên nhau.
  • legend : liên quan đến việc ghi chú thích cho các thanh. Nếu đối số này là TRUE thì chú thích được trình bày ; nếu là FALSE (giá trị mặc định), không ghi chú thích. Nếu chú thích được trình bày, ta có thể xác lập các chú thích bằng đối số args.legend. Bạn có thể tìm hiểu thêm về các đối số của lệnh này tại trang web "Add Legends to Plots".

Biểu đồ tần số

 

Để xem xét sự phân bố của một tập hợp số x, ngoài biểu đồ hộp với hàm boxplot, ta còn có thể dùng biểu đồ tần số với hàm hist. Ngoài đối số bắt buộc là tên của tập hợp số, các đối số sau cũng thường được sử dụng:

  • breaks liên quan đến sự phân chia x thành các khoảng để vẽ biểu đồ. Ta có các trường hợp sau:
    • Nếu ta không khai báo, x sẽ được chia thành các khoảng đều nhau ; số khoảng sẽ được xác định bằng thuật toán Sturges.
    • Nếu ta dùng một vectơ có kiểu số thì x được phân đoạn bằng những giá trị trong vectơ ấy.
    • Nếu breaks là số nguyên n thì x được chia thành n khoảng đều nhau.
    • Ta cũng có thể khai báo một hàm số xác định số khoảng hay giá trị của các điểm dùng để phân đoạn x.
    • Ta cũng có thể khai báo tên của thuật toán dùng để phân đoạn
    Trong ba trường hợp sau, các giá trị khai báo hay tính toán có thể không được sử dụng, vì R sẽ chuyển chúng thành những giá trị "đẹp" (pretty) hơn. Bạn có thể tìm hiểu thêm chi tiết hứng thú này tại trang web "Pretty Breakpoints".
  • freq : nếu freq = TRUE, trục tung sẽ thể hiện tần số (số lần xuất hiện) của khoảng giá trị tương ứng. Nếu sự phân đoạn là đều thì đây cũng là giá trị mặc định. Nếu freq = FALSE, trục tung thể hiện mật độ (density) của khoảng giá trị tương ứng, nghĩa là khi ấy, diện tích của toàn bộ biểu đồ sẽ là 1 đơn vị.
  • right : nếu right = TRUE (giá trị mặc định), biên phải của một khoảng thuộc về khoảng đó, còn biên trái thì không. Ngược lại, nếu right = FALSE, biên trái của một khoảng thuộc về khoảng đó, còn biên phải thì không

Các điểm trên được minh họa qua đoạn lệnh sau đây và Hình 6.

> x1 <- sample(0:40, 50, replace=TRUE)
> x2 <- sample(10:25, 100, replace=T)
> x <- c(x1, x2)
> hist(x)
> hist(x, 5, main="", las=1, col=5, border=2)
> hist(x, c(0,10,15,20,25,30,40), main="", las=1, col=5, border=2, freq=TRUE)
> hist(x, c(0,10,15,20,25,30,40), main="", las=1, col=5, border=2, freq=FALSE)
(6a)(6b)(6c)(6d)

Hình 6 Một số biểu đồ tần số với các đối số khác nhau của hàm hist

Qua đoạn lệnh trên và Hình 6 ta có các nhận xét sau:

  • Ba dòng đầu tiên được dùng để tạo tập hợp số x.
  • Dòng thứ tư vẽ biểu đồ với duy nhất đối số bắt buộc x (Hình 6a).
  • Dòng thứ năm có thêm một số đối số để điều chỉnh biểu đồ (Hình 6b). Cần lưu ý rằng mặc dù chúng ta khai báo số khoảng là 5, nhưng trên biểu đồ chỉ có bốn khoảng để chúng ta có những giá trị "đẹp".
  • Dòng thứ sáu và bảy có sự chia độ bằng một vectơ nên khoảng chia không đều. Sự khác biệt giữa Hình 6c và 6d là do sự khác biệt của đối số freq: trục tung khác nhau, kích thước tương đối của hai phân đoạn đầu và cuối so với các phân đoạn còn lại giữa hai hình cũng không như nhau.

Biểu đồ tròn

 

Mặc dù biểu đồ tròn (pie chart) xuất hiệt khá thường xuyên trên các phương tiện truyền thông, nhưng loại biểu đồ này không được các chuyên gia về phân tích dữ liệu cũng như thống kê đánh giá cao, trong đó có những người phát triển R. Do đó sự hỗ trợ của R cho biểu đồ tròn khá khiêm tốn nếu so với các phần mềm xử lý thống kê khác.

Trong loại biểu đồ này, mỗi số liệu được biểu diễn bằng một hình quạt tròn có diện tích tỷ lệ với giá trị của số liệu ấy và được phân biệt với số liệu khác bởi tên và màu (Hình 7).

Ta có thể sử dụng hàm pie để vẽ biểu đồ tròn với hai thông số bắt buộc là các số liệu và tên (label) của các số liệu ấy. Ngoài số liệu (là một vectơ), các đối số thông dụng của biểu đồ này là:

  • labels : tên của số liệu, được cho dưới dạng một vectơ có kiểu chữ.
  • edges : trong thực tế hình tròn được vẽ một cách gần đúng bởi một đa giác lồi đều có số cạnh cho bởi đối số này. Giá trị mặc định của đối số này là 200.
  • radius : là giá trị tương đối của bán kính hình tròn so với hình vuông ngoại tiếp hình tròn của biểu đồ và tên của các số liệu. Giá trị mặc định của radius là 0,8. Nếu tên của số liệu dài, ta cần giảm đối số này.
  • col : màu của các hình quạt tròn. Do đặc thù của biểu đồ tròn nên giá trị của col phải là một vectơ. Giá trị mặc định là một bộ 6 màu do R chọn sẵn.
  • clockwise : xác lập cách sắp xếp các số liệu liên tiếp nhau. Nếu clockwise = TRUE, xếp theo chiều kim đồng hồ; nếu clockwise = FALSE (giá trị mặc định), xếp ngược chiều kim đồng đồ.
  • init.angle : là một số có đơn vị là độ xác lập vị trí của hình quạt biểu diễn số liệu đầu tiên so với nửa đường thẳng nẳm ngang, có chiều hướng từ trái sang phải. Nếu clockwise = FALSE, giá trị mặc định của init.angle là 0 ; nếu clockwise = TRUE, giá trị mặc định của init.angle là 90.

Đoạn lệnh sau và Hình 7 minh họa cho các điểm vừa nêu trên. Số liệu là doanh số của một công ty trong 4 quý năm 2014 mà ta đã đề cập ở phần "Biểu đồ dạng thanh".

> pie(c(2700,1200,1700,2100), c("Quý 1","Quý 2","Quý3","Quý 4"))
> pie(c(2700,1200,1700,2100), c("Quý 1","Quý 2","Quý3","Quý 4"),
col=2:5, edges=10000, lwd=10, clockwise=TRUE)

Hình 7 Biểu đồ tròn vẽ bằng hàm pie

Ta có thể xây dựng các biểu đồ tròn 3D bằng cách dùng hàm pie3D của phụ kiện plotrix.


Vẽ bề mặt trong không gian ba chiều

 

Với hàm persp ta có thể vẽ các bề mặt trong không gian 3 chiều. Ta hãy khảo sát thí dụ sau và kết quả trên Hinh 8.

> x <- seq(-10,10,length=40)
> y <- x
> f <- function(x,y) { r=sqrt(x*x + y*y) ; sin(r)/r }
> z <- outer(x,y, f)
> persp(x,y,z, theta=30, col=5)

Hình 8 Mặt cong vẽ bằng hàm persp

Qua thí dụ trên, ta thấy trước khi thực hiện hàm persp, ta phải chuẩn bị dữ liệu. x và y là hai vectơ được xây dựng bởi hai dòng lệnh đầu. Dòng tiếp theo cho ta biết công thức tính giá trị của z theo x và y. Trong dòng thứ tư ta xây dựng ma trận chứa các phần tử của z dựa theo các giá trị của hai vectơ x và y bằng hàm outer.

Trong hàm vẽ persp, đối số theta là một góc có đơn vị là độ cho ta biết vị trí của trục x so với phương nằm ngang. Giá trị mặc định của đối số này là 0.



Trang trướcVề đầu chươngTrang sau


Trang web này được cập nhật lần cuối ngày 25/11/2018

R