N
|
hư ở bài trước mình có thực hành vẽ
biểu đồ hợp với package ggplot 2. Hôm nay, mình kết hợp giữa package ggplot2 và
ggthemes để vẽ biểu đồ hộp cho thêm phần sinh động, đặc biệt khoa học hơn. Ở
bài vẽ biểu đồ hộp với ggplot 2 mình có nói qua về những thông tin mà biểu đồ hộp
cung cấp như: trung vị, bách phân vị thứ 75, bách phân vị thứ 25... Ở bài này
mình không đi sâu về các thông tin mà biểu đồ hộp cung cấp, mà chỉ đề cập đến
việc kết hợp package ggthemes để vẽ biểu đồ cho ĐẸP, SINH ĐỘNG, LOGIC và KHOA HỌC
hơn. Để minh chứng cho những gì mình nói, hãy tập tành vẽ biểu đồ hợp với sự kết
hợp giữa package ggplot 2 và package ggthemes dưới đây:
Trường hợp, chỉ dùng package ggplot 2 để vẽ biểu đồ hộp
# data = rt2
> library (ggplot2)
> attach (rt2)
> head (rt2)
> h=ggplot(data=rt2, aes(x=age,
y=diameter,fill=age))+ geom_boxplot(aes(group=age))+theme_bw()+ggtitle(“Figure
1”)
#result Figure 1
Hoặc
Nếu sử dụng layer: geom_violin() thay
cho layer: geom_boxplot() như ở figure 1 bên trên, kết quả như sau:
> h1=ggplot(data=rt2, aes(x=age,
y=diameter,fill=age))+
geom_violin(aes(group=age))+theme_bw()+theme_classic()+ggtitle("Figure
2")
#result Figure 2
Tuy nhiên, một điều có thể nhận thấy,
ở hình 1 hay hình 2, thang giá trị về các chỉ tiêu sinh trưởng (trục tung trên
hình: stump diameter, tree height...), độ tuổi (trục hoành: age)... thể hiện
các giá trị chưa đều và chưa thực sự đẹp mắt, khoa học. Như trên trục tung giá
trị thể hiện từ 0 - trên 20 cm (khoảng 24 gì đó), nhưng không cụ thể. Tương tự,
ở trục hoành độ tuổi thể hiện có 3 độ tuổi là 3 tuổi : 5 tuổi : 7 tuổi (hình 1)
và 2 tuổi : 4 tuổi : 6 tuổi : 8 tuổi (hình 2). Để khắc phục khuyết điểm này và
trang trí cho biểu đồ ĐẸP hơn, LOGIC và KHOA HỌC hơn thì package ggthemes sẽ
giúp bạn làm điều đó. Thực ra, trong bài kết hợp 3 packages (ggplot2, ggthemesvà gridExtra) để vẽ biểu đồ mình cũng có đề cập đến vấn đề này rồi. Nhưng trong
phạm vi bài này mình chỉ kết hợp ggplot 2 và ggthemes để vẽ biểu đồ hộp thôi.
Các bạn để ý giữa trục tung, trục hoành (mình có đánh dấu) giữa hình 1, 2 và
3, 4, 5 để thấy sự khác biệt này nhé.
Vẽ biểu đồ hộp với ggplot2 & ggthemes
> h=ggplot(data=rt2, aes(x=age,
y=diameter,fill=age))+ geom_boxplot(aes(group=age))+theme_bw()+theme_classic()+
xlab("Age")+ ylab("stump diameter, cm")+
ggtitle("Figure 3")
> H=h+geom_rangeframe()+
theme_tufte()+ scale_x_continuous(breaks=extended_range_breaks()(rt2$age))+
scale_y_continuous(breaks=extended_range_breaks()(rt2$diameter))
# result Figure 3
>
h1=ggplot(data=rt2, aes(x=age, y=tree_height,fill=age))+
geom_violin(aes(group=age))+theme_bw()+theme_classic()+ xlab("Age")+
ylab("tree height, m")+ ggtitle("Figure 4")
> H1=h1+geom_rangeframe()+
theme_tufte()+ scale_x_continuous(breaks=extended_range_breaks()(rt2$age))+
scale_y_continuous(breaks=extended_range_breaks()(rt2$tree_height))
# result Figure 4
> h2=ggplot(data=rt2, aes(x=age,
y=m,fill=age))+ theme_bw()+theme_classic()+geom_jitter(aes(color=age))+
xlab("Age")+ ylab("M, m3")+ ggtitle("Figure 6")
> H3=h2+geom_rangeframe()+
theme_tufte()+ scale_x_continuous(breaks=extended_range_breaks()(rt2$age))+
scale_y_continuous(breaks=extended_range_breaks()(rt2$m))
# result Figure 6
0 comments:
Post a Comment