July 28, 2016

N
ở 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





July 27, 2016

Đ
ây là bài tiếp theo trong list bài về “lão hạc thế kỷ 21” mà mình đang cố gắng xây dựng dựa trên câu chuyện hoàn toàn có thật. Tuy nhiên, cũng có đôi chút hư cấu, đặc biệt khó tránh khỏi cái “tôi” cá nhân. Như ở bài trước có đề cập, bài này mình sẽ gửi tới quý bạn đọc câu chuyện với tựa đề “con giời”.

Con giời!

Một dạo, Toàn (T) em của Thắng mời mình đến uống cốc bia với lý do rất đơn giản nhưng cũng đầy cảm tình. Lâu em mới về, gọi anh đến uống cốc bia cho vui. Được cái mình cũng sống thoải mái với cậu em. Chuyện mình mời T đến uống bia, ăn cơm hay đến phòng trọ chơi, ăn, ngủ, nghỉ... bình thường như cân đường hộp sữa. Hôm đó, có bố T, T và mình. Bữa cơm thân mật thôi. Đang ngồi uống được khoảng 15 phút. Không khí đang vui vẻ khi hỏi, kể mọi chuyện lâu ngày T mới về. Rồi những lời căn dặn thật lòng của người cha. Ngay cả mình cũng giãi bày thêm những nỗi khổ, nhọc nhằn mà gia đình, đặc biệt người cha ở nhà đang trải qua để T hiểu.
-       Con đi làm bớt chơi, dành dụm mua con bò để bố chăn dắt sớm hôm, chứ giờ tuổi bố đã cao, sức đã yếu, không thể đi làm thuê như trước được... Bố tâm sự.
-       Em đã ra trường đời, kiếm tiền cả chục năm nay rồi. Còn thứ gì em chưa trải qua đâu. Ngay như anh, tuổi hơn em 5 - 6 tuổi. Nhưng nhiều thứ chưa trải qua cũng không nhiều kinh nghiệm bằng em được. Tuy nhiên, qua những lần “chơi bời” như vậy, em phải đúc rút được gì cho bản thân chứ. Mai mốt còn phải lo cho gia đình bé nhỏ của mình. Chứ sống một mình mãi đâu. Em thấy đấy, tuổi như bố em nhiều Bác có cháu bồng cháu bế, sớm hôm sum vầy cùng con cháu. Trong khi đó, giờ bố em ở nhà một mình, mẹ em cũng phải đi làm thuê (osin), chị gái em còn con cái, gia đình bên đằng chồng, Thắng nhà em đi biền biệt mấy năm trời không về nhà... Như bố em giãi bày, em tiết kiệm mua cho bố con bò. Hàng tháng em làm đủ công chỉ tháng rưỡi là có con bò để bố chăn dắt. May mắn 3 năm 2 lứa bê, mỗi năm cũng có cả chục triệu. Ở quê làm gì ra chục triệu, mà chẳng mấy vất vả, mất sức như đi làm thuê... Tôi tâm sự.

Đó là những tâm sự mà bố T và tôi giãi bày trong lúc ăn cơm. Thực ra, tôi còn tâm sự với em nhiều hơn thế nữa, thậm chí nhiều lần cho em mượn tiền, nhưng chưa thấy em trả bao giờ, mà chắc tôi cũng chẳng hy vọng em trả. Được cái, từ khi có gia đình, không thấy em mượn tiền tôi như trước kia. Chắc em cũng hiểu cuộc sống khi có gia đình nhỏ. Tuy nhiên, tôi chẳng ngại vấn đề cho em mượn tiền mà em chưa thấy trả. Quan trọng cho em mượn tiền giải quyết việc gì, chứ để trả nợ cho những chơi bời không đâu thì chắc sẽ không có thêm lần nữa. Về vấn đề cho T mượn tiền tôi sẽ kể vào dịp khác.

Quay lại câu chuyện, đang ngồi ăn cơm, nói chuyện vui vẻ. Có tiếng người vào nhà từ ngoài cổng. T chạy ra xem ai. 3 phút sau, T to tiếng chạy vào nhà tìm cái gì đó. Tôi và Bác hốt hoảng chạy ra xem. Chủ "con nợ” đến đòi tiền. Khổ nỗi mình nợ tiền thì mình phải trả. Chơi được chịu được. Rõ ràng. Đằng này còn hổ báo. “Chó cậy gần nhà, gà cậy gần chuồng” là đây. Không biết ra ngoài nói chuyện gì. Chạy vào nhà chửi ngược ra. Còn dọa ngược lại “chủ nợ” mới ghê. Hết chỗ nói. Khi đó tôi chạy ra, hóa ra 2 vợ chồng chủ quán nét cạnh nhà tôi, cũng là cháu gọi tôi bằng chú, nhưng chắc vợ chồng không nhận ra. Tôi hỏi 2 bạn có việc gì mời vào nhà nói chuyện, chứ đứng ngoài này không hay. T được đà càng nói to.
-       Tao đéo vào trả. Mày ngồi đó mà mơ. Tao chỉ trả tiền nét thôi. Còn tiền "xèng" tao đút...cặc...vào...trả - T chửi to.
-       Mày có giỏi cứ không trả xem sao. Tao cho luôn - Chủ nợ nói.
Giữa chủ nợ và con nợ lời qua tiếng lại. Bố T hỏi mày nợ những gì thì trả hết đi. Điên đầu tao. Con trả rồi, còn 5 trăm nữa thôi. Còn tiền xèng không phải trả (không biết mấy triệu) - T nói. Tôi cũng nói, chơi được phải trả được. Người ta mở ra có phải miễn phí đâu. T nói tiếp, bọn thằng L, thằng H nó có trả đâu. Một lúc sau, bác bảo thôi các cháu cứ về đi, bác sẽ bảo em nó mang tiền trả hai cháu sau. Chủ nợ đi về cũng không quên nói “mày giỏi cứ không trả xem sao”. T, mày dám thách bố mày. Tao...đút...cặc...vào...trả.

Thế là bữa cơm đang dùng cũng bỏ dở. T nói, bố vào ăn cơm cho xong đi. Tao không ăn nữa, khổ vì con vì cái - Bác nói. Tôi mời bác ăn dùng bữa tiếp. Bác bảo cháu cứ ăn đi. Bác không ăn nữa. Tôi cũng uống xong cốc bia cũng thôi. Tôi ngồi hỏi han sự tình câu chuyện nợ ở quán nét. Hóa ra, em đến chơi nét (game), kêu thuốc, nước, mì tôm trứng... cho những buổi thâu đêm. Còn kêu “đắt” nữa. Tôi bảo không lẽ họ mở ra phục vụ mọi người không công ư. Ngồi gác chân, vểnh râu trê, quát to (gọi thuốc, nước, mì tôm...) người ta phục vụ tận mồm còn kêu đắt.
-       Còn chơi “xèng” sao không trả tiền? - tôi hỏi. Trò lừa đảo, T nói.
-       Ô hay, người ta mở ra, việc mình chơi hay không họ có bắt ép đâu. Khi chơi được ăn thua chịu, chuyện đương nhiên. Nay chơi thua, lại còn chơi chịu mà lại không chịu trả, tôi nói.
T2 dẫn chứng việc mình không trả. Thằng H nó chơi chịu hết 10 triệu, mới trả 3 triệu, còn lại nó cũng không trả. Thằng L cũng vậy, nó có trả đâu. Đó là cách giải thích của một thằng “cùn”. Chơi được mà không trả được thì lần sau đừng có mà chơi. “Nợ” tiền, bây giờ người ta đến đòi, nên thu xếp mà trả cho xong, đỡ đau đầu, gây phiền phức cho bố em, tôi bực mình nói vài câu. Bố T cũng tiếp lời, còn nợ bao nhiêu mang trả đi cho xong tội. Đang ngồi nói chuyện, một cuộc điện thoại gọi đến T làm đứt quãng câu chuyện. Nhưng T không nhấc máy. Đầu bên kia cứ gọi. Bên này lại tắt. Tôi hỏi ai gọi mà không bắt máy. T không nói gì. Cuộc thứ 3 gọi đến T bắt mắt. Anh dọa em à. Anh đòi nợ hộ bọn nó à. Bọn nó đến nhà em nói nhẹ nhàng không nghe, còn “hổ báo”. Em đéo trả bọn nó. Đó là những gì T nói chuyện với người đầu bên kia, rồi tắt máy. Tôi hỏi T không cho biết là ai.

Giá như...

Thực sự mà nói, nếu chủ quán nét không cho cắm nợ, chịu... thì cũng có cái khó riêng. Bởi, toàn người làng. Như vậy sẽ không giữ được khách, đặc biệt khách quen, khách tiềm năng (chịu chơi, chơi nhiều). Mà cho chơi chịu, ăn, uống... nợ, giờ mới đến nông nỗi này. Cái khó nữa, cho chịu một vài trăm, hay đôi ba triệu không sao. Nay cả chục triệu bạc, có ít đâu. Ở quê kiếm đâu ra tiền. Mà một lúc trả cả cục như thế, thấy “xót”, cay mũi lắm. Đúng là của đau con xót. Khi đó, chuyện tìm cách “bùng” sẽ xảy ra. Thực tế như vậy. Thực ra, ở quê còn người nọ người kia mới vậy, chứ ra ngoài đường đố dám. Chắc điều này, em cũng hiểu rõ hơn ai hết. Và GIÁ NHƯ... chủ quán không cho chơi hay ăn uống chịu có lẽ sẽ không xảy ra sự việc đáng tiếc như vậy. Qua đây, có thể coi là bài học cho “con nợ” và “chủ nợ”. Mà với đối tượng như vậy chắc không có lần sau.


Trên đây là một góc nhỏ trong list câu chuyện về cuộc sống thường nhật của “lão hạc thế kỷ 21”. Mời quý bạn đọc theo dõi tiếp kỳ sau, với tựa đề “con số đỏ đen”.

=======================================================================
Note: Nhân vật trong câu chuyện đã được thay đổi tên

July 26, 2016

Hôm nay, đang ngồi xử lý số liệu thì gặp trường hợp số liệu trống không (missing value). Để thuận tiện cho các phân tích tiếp theo, thì loại bỏ “số liệu trống không” trong data.frame là rất cần thiết. Vì R không tính toán được các phân tích tiếp theo.

Loại bỏ số liệu trống không

Trong nghiên cứu, vì nhiều lý do, số liệu không thể thu thập được cho tất cả các đối tượng, hay không thể đo lường tất cả các biến số cho một đối tượng, đặc biệt các nghiên cứu theo thời gian (số liệu theo thời gian). Trong phạm vi bài viết, số liệu về sinh trưởng cây Keo lá liềm được thử nghiệm trên vùng cát ven biển (3 huyện của 3 tỉnh vùng BTB), với 4 công thức thí nghiệm (CTTN) khác nhau, theo dõi qua các độ tuổi khác nhau. Trong trường hợp đó, số liệu trống được xem là “missing value”, có thể gọi là số liệu trống không. Trong R xem các số liệu trống không là NA (xem hình dưới đây, ví dụ các đối tượng (id) từ 171 đến 177).


Có một số kiểm định thống kê đòi hỏi phải loại các số liệu trống không ra (vì không tính toán được) trước khi phân tích. Số liệu trống không trong ví dụ, là các biến của cây Keo lá liềm bị chết, nên không có số liệu. Vậy câu hỏi đặt ra, tại sao không loại bỏ trước khi nhập số liệu? Như trên mình có nói, trường hợp nghiên cứu là đánh giá các biến (các chỉ tiêu sinh trưởng) của cây Keo lá liềm ở các CTTN theo thời gian (qua các năm, các độ tuổi khác nhau). Trong quá trình theo dõi việc đối tượng bị mất, hay bị chết, đặc biệt trong công tác trồng vùng đất cát ven biển là điều khó tránh khỏi. Vấn đề được đặt ra tiếp theo, loại bỏ các số liệu trống không ra khỏi data để phân tích tiếp theo? Thông thường, mình hay vào file gốc xóa bỏ các dòng (đối tượng) trống không. Như vậy rất mất thời gian (thủ công), dễ sai sót. Tuy nhiên, trong R có một lệnh rất có ích cho việc này: na.omit. Cách sử dụng như sau:

> LeThuy_Age1.3=na.omit(LT_Age1.3)
Trong lệnh trên, chúng ta yêu cầu R loại bỏ các số liệu trống không trong data.frame (LT_Age1.3) và data.frame (LeThuy_Age1.3) mới đã được loại bỏ các số liệu trống không. Kết quả thể hiện trong hình dưới đây (để ý cột id và cột mới row.names).


Kết quả hình trên cho thấy (để ý dòng cuối cùng), cột id có số thứ tự cuối cùng là 227 và cột row.names có số thứ tự 243. Tức là, có 16 đối tượng có số liệu trống không đã được loại bỏ.

Từ đây (data.frame đã loại bỏ số liệu trống không – LeThuy_Age1.3) có thể xử lý thống kê thông thường.
Trong phạm vi bài viết, mục tiêu là phân tích một số thông số thống kê thông thường như: mean, sd (độ lệch chuẩn), se (sai số chuẩn), median, bách phân vị 75%, bách phân vị 25%, max, min...
 Kết quả tính thông số thống kê: mean, sd, se như sau:
#attach(LeThuy_Age1.3)
#head(LeThuy_Age1.3)
> library(psych)
> describeBy(LeThuy_Age1.3, group=CTTN, skew=F, range=F)
#result

group: CT 1
                       vars  n  mean   sd   se
Local*                    1 67  2.00 0.00 0.00
Age                       2 67  2.30 0.00 0.00
CTTN*                     3 67  1.00 0.00 0.00
stump_diameter            4 67  3.52 1.37 0.17
tree_height               5 67  1.47 0.45 0.05
canopy_diameter           6 67  1.99 0.48 0.06
main_trunk                7 67  2.00 0.78 0.10
bough_50_cm               8 67 13.73 5.24 0.64
phan_than                 9 67  0.67 0.47 0.06
song_chet                10 67  1.00 0.00 0.00
stump_diameter_growth    11 67  1.53 0.60 0.07
tree_height_growth       12 67  0.64 0.19 0.02
canopy_diameter_growth   13 67  0.86 0.21 0.03
litter_fall              14 67  0.19 0.05 0.01
-------------------------------------------
group: CT 2
                       vars  n  mean   sd   se
Local*                    1 80  2.00 0.00 0.00
Age                       2 80  2.30 0.00 0.00
CTTN*                     3 80  2.00 0.00 0.00
stump_diameter            4 80  3.77 1.37 0.15
tree_height               5 80  1.58 0.51 0.06
canopy_diameter           6 80  2.06 0.46 0.05
main_trunk                7 80  1.91 0.92 0.10
bough_50_cm               8 80 12.40 5.85 0.65
phan_than                 9 80  0.79 0.41 0.05
song_chet                10 80  1.00 0.00 0.00
stump_diameter_growth    11 80  1.64 0.60 0.07
tree_height_growth       12 80  0.69 0.22 0.02
canopy_diameter_growth   13 80  0.89 0.20 0.02
litter_fall              14 80  0.20 0.06 0.01
-------------------------------------------
group: CT 3
                       vars  n  mean   sd   se
Local*                    1 75  2.00 0.00 0.00
Age                       2 75  2.30 0.00 0.00
CTTN*                     3 75  3.00 0.00 0.00
stump_diameter            4 75  4.52 1.43 0.16
tree_height               5 75  1.92 0.58 0.07
canopy_diameter           6 75  2.20 0.44 0.05
main_trunk                7 75  1.83 0.88 0.10
bough_50_cm               8 75 14.33 5.59 0.65
phan_than                 9 75  0.95 0.23 0.03
song_chet                10 75  1.00 0.00 0.00
stump_diameter_growth    11 75  1.97 0.62 0.07
tree_height_growth       12 75  0.83 0.25 0.03
canopy_diameter_growth   13 75  0.96 0.19 0.02
litter_fall              14 75  0.23 0.07 0.01
-------------------------------------------
group: DC
                       vars  n  mean   sd   se
Local*                    1 50  2.00 0.00 0.00
Age                       2 50  2.30 0.00 0.00
CTTN*                     3 50  4.00 0.00 0.00
stump_diameter            4 50  4.19 0.79 0.11
tree_height               5 50  1.50 0.44 0.06
canopy_diameter           6 50  1.91 0.33 0.05
main_trunk                7 50  1.50 0.65 0.09
bough_50_cm               8 50 11.84 4.24 0.60
phan_than                 9 50  0.90 0.30 0.04
song_chet                10 50  1.00 0.00 0.00
stump_diameter_growth    11 50  1.82 0.34 0.05
tree_height_growth       12 50  0.65 0.19 0.03
canopy_diameter_growth   13 50  0.83 0.14 0.02
litter_fall              14 50  0.21 0.04 0.01
-------------------------------------------

#Tương tự cho các độ tuổi còn lại.


Tuy nhiên, để phân tích được các thông số thống kê như: bách phân vị 75%, bách phân vị 25%, max, min... Chúng ta lại sử dụng lệnh subset trong R mà bài trước mình đã giới thiệu. Sau khi subset riêng cho từng CTTN, thì việc tiếp theo rất đơn giản cho phân tích thống kê cũng như vẽ các biểu đồ theo ý muốn.

#> LeThuy_DC=subset(LeThuy_Age1.3, CTTN=="DC")
#> attach(LeThuy_DC)
#> head(LeThuy_DC)

> summary(LeThuy_DC)
         Local         Age        CTTN    stump_diameter
 Cam_Duong  : 0   Min.   :1.3   CT 1: 0   Min.   :1.460 
 Le_Thuy    :34   1st Qu.:1.3   CT 2: 0   1st Qu.:1.995 
 Trieu_Phong: 0   Median :1.3   CT 3: 0   Median :2.530 
                  Mean   :1.3   DC  :34   Mean   :2.601 
                  3rd Qu.:1.3   DC  : 0   3rd Qu.:2.913 
                  Max.   :1.3             Max.   :4.620 
 ------------------------------------------------------
 tree_height     canopy_diameter   main_trunk  
 Min.   :0.6000   Min.   :0.450   Min.   :1.000 
 1st Qu.:0.8050   1st Qu.:0.935   1st Qu.:2.000 
 Median :0.9400   Median :1.050   Median :2.500 
 Mean   :0.9859   Mean   :1.055   Mean   :2.676 
 3rd Qu.:1.2300   3rd Qu.:1.188   3rd Qu.:3.000 
 Max.   :1.4700   Max.   :1.650   Max.   :6.000 
 ---------------------------------------------
 bough_50_cm      phan_than        song_chet
 Min.   :1.000   Min.   :0.0000   Min.   :1 
 1st Qu.:1.000   1st Qu.:0.0000   1st Qu.:1 
 Median :2.000   Median :0.0000   Median :1 
 Mean   :1.912   Mean   :0.3529   Mean   :1 
 3rd Qu.:2.000   3rd Qu.:1.0000   3rd Qu.:1 
 Max.   :4.000   Max.   :1.0000   Max.   :1 
 ------------------------------------------
 stump_diameter_growth tree_height_growth
 Min.   :1.130         Min.   :0.4600   
 1st Qu.:1.538         1st Qu.:0.6225   
 Median :1.945         Median :0.7250   
 Mean   :2.001         Mean   :0.7585    
 3rd Qu.:2.237         3rd Qu.:0.9425   
 Max.   :3.550         Max.   :1.1300   
 ------------------------------------
canopy_diameter_growth  litter_fall   
 Min.   :0.3500         Min.   :0.0600 
 1st Qu.:0.7225         1st Qu.:0.0900 
 Median :0.8100         Median :0.1200 
 Mean   :0.8121         Mean   :0.1235 
 3rd Qu.:0.9100         3rd Qu.:0.1400 
 Max.   :1.2700         Max.   :0.2300 
#Tương tự cho các CTTN còn lại.

Vẽ biểu đồ cho đối tượng nghiên cứu
Biểu đồ hộp (boxplot)
 #library(ggplot2)
> l=ggplot(data=LeThuy_Age1.3, aes(LeThuy_Age1.3$CTTN, y=stump_diameter))+ theme_bw()+ theme_classic()+ geom_boxplot(aes(fill=CTTN))+ xlab("CTTN")+ ylab("stump diameter, cm")
> lt3=l+ geom_rangeframe()+ theme_tufte()+ scale_y_continuous(breaks=extended_range_breaks()(LeThuy_Age1.3$stump_diameter))



Biểu đồ tương quan

> lt=ggplot(data=LeThuy_Age1.3, aes(x=stump_diameter, y=tree_height))+ theme_bw()+ theme_classic()+ xlab("stump diameter, cm")+ ylab("tree height, m")+ geom_point(aes(color=CTTN, size=Main_trunk))+ geom_smooth(method="lm")
> lt2=lt+ geom_rangeframe()+ theme_tufte()+ scale_x_continuous(breaks=extended_range_breaks()(LeThuy_Age1.3$stump_diameter))+ scale_y_continuous(breaks=extended_range_breaks()(LeThuy_Age1.3$tree_height))



#library(ggExtra)
Biểu đồ tương quan kết hợp với type=”histogram”
 > ggMarginal(lt2, type="histogram", color="White", size=2)



Biểu đồ tương quan kết hợp với type=”density”
> ggMarginal(lt2, type="density", color="green", size=2)



=====================================================================
Tham khảo: Nguyễn Văn Tuấn (2014). Phân tích dữ liệu với R. Nxb Tổng hợp TP HCM.

chủ đề

Ăn của rừng bài báo khoa học bản quyền bành trướng Bảo vệ cây là bảo vệ chính mình biến đổi khí hậu Biển Đông Biết sai vẫn cứ làm biểu đồ biểu đồ hộp biểu đồ sai số chuẩn Biểu đồ tương quan Biểu đồ với nhãn bon-sai boxplot buoc-dau-nghien-cuu-khoa-hoc but-ky-doi-toi Cái tài Cái tâm Cái tầm canh tác đất dốc Cây xanh đô thị Cha chung không ai khóc cha nào con nấy Chân thiện mỹ chân trong chân ngoài chạy chức chạy quyền Che chở Chết toàn tập chọn cách ta sống chữ tín chuyện giờ mới kể có vấn đề Cơm áo gạo tiền Con cháu các cụ con người biến thái Con ông cháu cha công nghệ 4.0 correlation matrix corrgram corrplot Cứ đi rồi sẽ tới cuộc cách mạng 4.0 Đam mê đàn gảy tai trâu danh dự danh xưng phù phiếm Đạo đức sống đào tạo sau đại học Đạo văn Đấu tranh sinh tồn day-do Đẹp trong tâm hồn Đi tắt đón đầu dở khóc dở cười đọc nghe nhìn và cảm nhận Dồn điền đổi thửa Động lực dựa vào nhau mà sống error bar plot GGalyy ggcorplot ggExtra ggiraph ggplot2 ggrepel ggthemes Giáng sinh Giáo dục giàu nghèo giục tốc bất đạt Góc quê gridExtra Hài lòng Hai mặt một lời hãy là chính mình hãy sống có trách nhiệm hơn hèn nhát Hiệu sau ứng bão hiệu ứng domino formosa Hiệu ứng sau bão Hòa cả làng học giả bằng thật hoc-lam-tho hoc-r-moi-ngay Ích kỷ KH&CN khả năng Khoán chi Không lối thoát Kiểm định thống kê kỹ năng mềm Kỷ niệm vùng miền Label lan rừng Lão Hạc thế kỷ 21 Liêm chính lính đánh thuê Lợi dụng lợi ích nhóm lừa trên gạt dưới lười suy nghĩ Lương thiện giả vờ Lương y Ma trận tương quan Mẹ Miền cát trắng miền đất hứa Mộc Châu món ăn địa phương Mùa gặt Mục đích sống Mường La Nghịch lý chất lượng - số lượng Nghiên cứu khoa học Ngồi chơi xơi nước Nhân cách nhu cầu Những cung đường tôi đã qua NN&PTNT phân cấp sinh trưởng phân tích hậu định phan-bien-xa-hoi plot3D psych Quán Nha R Rừng ngập mặn rước hổ về nhà rvg sach-hay SARS-CoV-2 sau-luy-tre-lang sciplot Số cây Số liệu trống không Sông Châu sống chết mặc ai sức ỳ sức ỳ bản thân suy thoái Tầm lùn tâm sự tâm sự buồn thảm họa formosa thảm họa môi trường tham nhũng Thân cô thế cô thắng cố ngựa Thăng trầm Thấy vậy mà không phải vậy Thế cây Thế cây cổ Thế cây thế người Thông điệp cuộc đời Thống kê mô tả Thông tư Thước đo lòng người Thủy điện Tiên trách kỷ hậu trách nhân Tình bạn cao đẹp Tình người Tố chất làm khoa học tội đếch gì mà phải ghét ai Tôi sợ giầu lắm track changes Trải nghiệm tre già măng mọc trở mặt Trung thực tư duy Tự sự Tư tưởng thụt lùi tuy duy nhiệm kỳ Ứng dụng R trong lâm nghiệp Văn hóa cảm ơn Văn hóa giao thông văn hóa ngầm Văn hóa xin lỗi Xấu khen đẹp chê Xỏ nhầm giầy xoay đầu đổi đít Ý tưởng
Powered by Blogger.

Disqus Shortname

Widget Recent Post No.

Widget Random Post No.

Widget Recent Comment No.

PageNavi Results No.

Labels Max-Results No.

Comments system

Contact Form

Name

Email *

Message *

bài đăng phổ biến

số lượt ghé qua trang blog

Bài đăng nổi bật

Thế cây thế người

T hế trong CÂY CẢNH thể hiện các chi tiết về CẤU TRÚC ở mọi phương diện, đa góc nhìn (trên dưới trái phải ngang dọc), trong đ...

Bài đăng phổ biến

bài xem nhiều nhất