Thiết kế biểu đồ bằng R (Phần 2: Các dạng biều đồ (gói ggplot2))

13:57:00 09/12/2016

Chỉ thiết kế dạng “thô”. Các phần hiệu chỉnh theo phần 1.

  1. Biểu đồ hình bánh.

# Sắp xếp lại dữ liệu

> table(gender)

gender

  F   M

862 355

# Tạo bộ dữ liệu mới gồm 355 nam và 862 nữ.

> q=data.frame(nhom=c("F","M"),SL=c(862,355))

> q

  nhom  SL

1    F 862

2    M 355

> p=ggplot(q,aes(x="",y=SL,fill=nhom))

> p+geom_bar(width=1) + coord_polar("y")

 

  1. Biểu đồ thanh chỉ số trung bình

# Trung bình tỷ trọng mỡ theo giới tính

> p=ggplot(du,aes(x=gender,y=pcfat,fill=gender))

> p+stat_summary(fun.y="mean",geom="bar")

 

  1. Biểu đồ phân bố

# Phân bố lượng mỡ cơ thể chung cho 2 giới

> p=ggplot(du,aes(x=fat))

> p+geom_histogram()

>p+geom_histogram(aes(y=..density..))+geom_density(col="red")

# Phân bố tỷ trọng mỡ theo giới.

> p=ggplot(du, aes(x = pcfat, fill = gender))

> p+geom_density(alpha = 0.5)

p+geom_histogram(alpha = 0.7)

  1. Biểu đồ xác suất tích lũy.

# Xác suất tích lũy tỷ trọng mỡ theo giới

> cdf <- ggplot(du, aes(x=pcfat)) + stat_ecdf(aes(colour=gender),xlim=c(5,60))

> cdf

 

 

 

5. Biểu đồ hộp (boxplot)

> p=ggplot(du, aes(y = pcfat, x= gender))

> p+geom_boxplot()

# Xoay ngang biểu đồ.

> p+geom_boxplot()+coord_flip()

# Đôi khi muốn diễn tả số liệu theo nhóm với một biến liên tục nào đó ví dụ như muốn xem tỷ trọng chất béo theo tuổi và giới tính. Biếu đồ boxplot cũng là một công cụ trực quan có ích. (từ 40 tuổi trở đi)

> p=ggplot(t, aes(y = pcfat, x= factor(age),fill=gender))

> p+geom_boxplot()

 

  1. Biểu đồ đường thẳng

# Biểu đồ loại này thường diễn tả số liệu theo thời gian nên tạo ra bộ số liệu dưới đây bằng R

>q=data.frame(nam=c(2013,2014,2015,2016),SR=c(45,35,50,18),SXH=c(20,15,8,33))

> q

   nam SR SXH

1 2013 45  20

2 2014 35  15

3 2015 50   8

4 2016 18  33

> p=ggplot(q, aes(x= nam)))

> p+geom_line(aes(y=SR))

>p+geom_line(aes(y=SR))+geom_line(aes(y=SXH),linetype="dashed")+labs(x="Thời gian", y="Số lượng")

 

  1. Biểu đồ sai số chuẩn

# Dùng gói sciplot nếu chưa cài đặt thì cài đặt theo lệnh sau:

> install.packages(“sciplot”)

> library(sciplot)

>bargraph.CI(gender,age,col=c("red","blue"),ylim=c(0,40))

>lineplot.CI(bmi,pcfat,gender,legene=F,col=c("red","blue"))

 

  1. Biểu đồ tương quan đa biến

# Dùng gói psych. Gói này ngoài thiết kế biểu đồ đa biến đẹp còn là công cụ hữu ích thống kê dữ liệu liên tục theo nhóm như ví dụ dưới đây. Nếu chưa cài đặt dùng lệnh

>Install.packages(“pcych”)

>library(psych)

> describe.by(du,gender,range=F)

group: F

        vars   n     mean      sd  skew kurtosis     se

id         1 862   637.79  362.05 -0.07    -1.25  12.33

gender*    2 862     1.00    0.00   NaN      NaN   0.00

height     3 862   153.29    5.55 -0.08     0.09   0.19

weight     4 862    52.31    7.72  0.60     1.32   0.26

bmi        5 862    22.26    3.05  0.66     1.32   0.10

age        6 862    48.57   16.41 -0.09    -0.64   0.56

WBBMC      7 862  1599.24  292.83 -0.10     0.02   9.97

wbbmd      8 862     0.99    0.11 -0.17    -0.11   0.00

fat        9 862 18239.79 4954.19  0.52     0.59 168.74

lean      10 862 32045.19 3966.37  0.79     2.14 135.10

pcfat     11 862    34.67    5.19 -0.26     0.33   0.18

------------------------------------------------------------

group: M

        vars   n     mean      sd  skew kurtosis     se

id         1 355   558.02  329.06  0.13    -1.04  17.46

gender*    2 355     2.00    0.00   NaN      NaN   0.00

height     3 355   165.06    6.73  0.05     0.16   0.36

weight     4 355    62.02    9.59  0.35     0.56   0.51

bmi        5 355    22.73    3.04  0.23     0.26   0.16

age        6 355    43.70   18.79  0.26    -0.93   1.00

WBBMC      7 355  2030.08  336.28  0.18    -0.02  17.85

wbbmd      8 355     1.06    0.10  0.07    -0.33   0.01

fat        9 355 14978.39 5113.41  0.32     0.11 271.39

lean      10 355 43762.40 5819.02  0.13     0.22 308.84

pcfat     11 355    24.16    5.76 -0.23    -0.17   0.31

# Biểu đồ tương quan giữa tỷ trọng mỡ cơ thể, khôi lượng cơ, chỉ số khối cơ thể và tuổi.

>dabien=cbind(pcfat,lean,bmi,age)

> pairs.panels(dabien)

BS: Bùi Văn Dủ