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 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.
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:
Để 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ấtoutline
: 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
, border
và outline
.
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 đồ 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".
Để 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:
breaks
là số nguyên n thì x được chia thành n khoảng đều nhau.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)
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:
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.
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ớ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 web này được cập nhật lần cuối ngày 25/11/2018
R
Các chuyên đề
Xử lý dữ liệu
Ma trận
R