You are on page 1of 28

SciEco

Chương 5 - Trực quan hóa số liệu


SciEco - Science for Economics
Trình bày: Hoàng Đăng Khánh

Page 1 / 28
SciEco

Các biểu đồ khoa học cơ bản


Biểu đồ phân bố (Histogram)
Biểu đồ đường (Line plot)
Biểu đồ hộp (Box plot)
Biểu đồ thanh (Bar plot)
Biểu đồ tương quan (Scatter plot)

Page 2 / 28
Giới thiệu về dữ liệu

head(application) : dữ liệu application_sample.csv

150 quan sát, chiều dài và chiều rộng của cánh hoa (Petal) và đài
hoa (epal)

Page 3 / 28
SciEco

Mục đích:
Mô tả phân bố về mức thu nhập và giá trị khoản vay
Phân bố có khác nhau giữa giới tính, tình trạng hôn nhân, …

Page 4 / 28
Biểu đồ phân bố Histogram

hist(var, xlab, ylab, main, xlim, ylim, col, border, prob)

Dùng kết hợp với

lines(
density(na.omit(var)),
col,
lwd
)

So sánh kết quả với đường phân phối chuẩn

x <- seq(min(var), max(var), length=50)

lines(
x, col = "blue", lwd = 2
dnorm(x, mean=mean(var), sd=sd(var))
)

Page 5 / 28
Biểu đồ phân bố Histogram

Page 6 / 28
Biểu đồ hộp Box plot

Page 7 / 28
Biểu đồ hộp Box plot

boxplot(
var,
xlab,
ylab,
main,
xlim,
ylim,
col,
border,
horizontal,
notch
)

Khi phân nhóm boxplot(var ~ group)

Page 8 / 28
Biểu đồ hộp Box plot

Page 9 / 28
Biểu đồ hộp Box plot
kết hợp boxplot và histogram
Sử dụng hàm par(new = TRUE)

Page 10 / 28
Biểu đồ thanh Barplot

table(application$CODE_GENDER)

Businessman Commercial Maternity leave Pensioner


10 71617 5 55362
...

barplot(
table(application$CODE_GENDER),
col = "steelblue",
ylab = "Số lượng",
main = "Phân bổ theo loại thu nhập"
)

Page 11 / 28
Biểu đồ thanh Barplot

Page 12 / 28
Biểu đồ thanh Barplot

Tính các thống kê khác (mean, sum, ...)

barplot(
tapply(
application$AMT_INCOME_TOTAL,
application$CODE_GENDER, mean
),
col = "steelblue",
xlab = "Thu nhập trung bình",
ylab = "Giới tính",
main = "Thu nhập trung bình theo giới tính"
)

Page 13 / 28
Biểu đồ thanh Barplot

Page 14 / 28
Biểu đồ đường Line plot

Dùng biểu diễn dữ liệu timeseries, ví dụ:

Dữ liệu credit_transaction.csv - chi tiêu bằng thẻ tín dụng


group_by và summarise và lubridate để tổng hợp theo ngày

Page 15 / 28
Biểu đồ đường Line plot

plot(
date,
amount,
type = 'l',
main = "Giao dịch theo ngày bằng thẻ tín dụng (năm 2022)",
ylab = "Giá trị (nghìn USD)",
xlab = ""
)

Page 16 / 28
Biểu đồ đường Line plot

Page 17 / 28
Biểu đồ phân tán Scatter plot

plot(varX ~ varY, pch, main, xlab, ylab, xlim, ylim, col)

abline(lm(varX ~ varY), col, lwd)

Ví dụ với tập dữ liệu application_sample.csv

# lấy 2000 quan sát đầu tên


application <- application[1:2000,]

plot(
application$AMT_CREDIT,
application$AMT_INCOME_TOTAL,
ylab = "Tổng thu nhập (AMT_INCOME_TOTAL)",
xlab = "Giá trị khoản vay (AMT_CREDIT)"
)

Page 18 / 28
Biểu đồ phân tán Scatter plot

Page 19 / 28
Biểu đồ phân tán Scatter plot

plot(
application$AMT_CREDIT,
application$AMT_INCOME_TOTAL,
ylab = "Tổng thu nhập (AMT_INCOME_TOTAL)",
xlab = "Giá trị khoản vay (AMT_CREDIT)",
col = factor(application$CODE_GENDER),
pch = 19
)

legend(
"topleft",
legend = levels(
factor(application$CODE_GENDER)
),
pch = 19,
col = factor(
levels(factor(application$CODE_GENDER))
)
)

Page 20 / 28
Biểu đồ phân tán Scatter plot

Page 21 / 28
SciEco

Sử dụng ggplot2

Page 22 / 28
Sử dụng ggplot2

Page 23 / 28
Sử dụng ggplot2

Page 24 / 28
Sử dụng ggplot2

ggplot(dat, aes(col1, col2, ...)) +


geom_line() +
...

Geometric object Ý nghĩa


geom_histogram(x=) Biểu đồ phân bổ
geom_boxplot(x=) Biểu đồ hộp
geom_bar(x=) Biểu đồ thanh
geom_point(x=) Biểu đồ điểm
geom_line(x=) Biểu đồ đường thẳng
geom_smooth(x=) Biểu đồ smooth
geom_density(x=) Biểu đồ xác suất phân bố
geom_errorbar(x=) Biểu đồ với sai số chuẩn

Page 25 / 28
Sử dụng ggplot2

Thêm label

p + xlab("xx") + ylab("yy") + ggtitle("plot title ...")

Thêm limit

p + xlim(0, 100) + ylim(0, 10)

Theme

p + theme_bw()
p + theme_classic()
p + theme_minimal()

Vị trí legend

p + theme(legend.position = "top")

Page 26 / 28
Sử dụng ggplot2

Nâng cao:
Tùy chỉnh nâng cao với hàm theme()
Vẽ đồ thị 3d, đồ thị tương tác với plotly
Đồ thị động với gganimate

Page 27 / 28
Sử dụng ggplot2

Bài tập về nhà


Trực quan dữ liệu Kiva và UN (dữ liệu về khoản vay - loans)
Yêu cầu: sử dụng R với package ggplot2 để vẽ lại các đồ thị link
Bài tập chương 5
Bài viết gốc: Được viết bằng python (có phân tích chi tiết)

Tham khảo
Cheatsheet ggplot2: folder bài giảng chương 5
r-charts.com: cách vẽ 1 số đồ thị trong thực tế ( rbase và
package ggplot2 )

Page 28 / 28

You might also like