Chạy các gói

library(RJSONIO)
library(WDI)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.3.3
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Warning: package 'ggplot2' was built under R version 3.3.3
## Warning: package 'tibble' was built under R version 3.3.3
## Warning: package 'tidyr' was built under R version 3.3.3
## Warning: package 'readr' was built under R version 3.3.3
## Warning: package 'purrr' was built under R version 3.3.3
## Warning: package 'dplyr' was built under R version 3.3.3
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag():    dplyr, stats
library(ggrepel)
## Warning: package 'ggrepel' was built under R version 3.3.3
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 3.3.3
library(ggplot2)
library(magrittr)
## Warning: package 'magrittr' was built under R version 3.3.3
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
library(scales)
## Warning: package 'scales' was built under R version 3.3.3
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor

Lấy data

Data của Việt Nam

dat <- WDI(indicator = c("EN.ATM.CO2E.KT", "NY.GDP.PCAP.CD","EN.ATM.GHGT.KT.CE"),
           country = c("VN"),
           start = 1980,
           end = 2015)
datRR <- WDI(indicator = c("NY.GDP.TOTL.RT.ZS"),
           country = c("VN","CN","1W","4E"),
           start = 1985,
           end = 2015)

Biểu đồ thể hiện GDP bình quân đầu người và lượng khí nhà kính của Việt Nam giai đoạn 1985-2015

dat %>% ggplot(aes(dat$NY.GDP.PCAP.CD,dat$EN.ATM.GHGT.KT.CE/1000,
                   label = year)) +
  geom_point()+
  #Biểu hiện tên các quan sát trên đồ thị
  geom_text(check_overlap = T)+
  #Vẽ đường hồi quy bậc 2
  stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 1, se = F )+
  labs(x = "GDP bình quân đầu người (US$)",
       y = "Lượng khí nhà kính (1000 tấn CO2 quy đổi)",
       title = "Hình 6: Mối quan hệ giữa lượng khí nhà kính và GDP bình quân đầu người của Việt Nam thời kỳ 1985-2012",
       caption = "Nguồn: The World Bank")+
  theme_fivethirtyeight() + 
  scale_color_fivethirtyeight()
## Warning: Removed 8 rows containing non-finite values (stat_smooth).
## Warning: Removed 8 rows containing missing values (geom_point).
## Warning: Removed 8 rows containing missing values (geom_text).

Biểu đồ thể hiện đóng góp của tài nguyên trong GDP của Việt Nam so sánh các khu vực khác nhau

datRR <- rename(datRR, TNRR = NY.GDP.TOTL.RT.ZS)
a <- ggplot(data = datRR, aes(year, TNRR, color = country)) +
  geom_line(size=1) + 
  geom_point(size=3, fill="white") 

a + labs(x = NULL,
         y = NULL,
         title = "Hình 7: Tỉ lệ tô tài nguyên trong GDP giai đoạn 1985-2015",
         subtitle = "Đơn vị tính: % của GDP",
         caption = "Nguồn: The World Bank")+
  #sắp xếp lại đơn vị hiển thị trên trục X
  scale_x_continuous(breaks = seq(1985,2015,5)) +
  theme_fivethirtyeight() + 
  scale_color_wsj()

Lấy số liệu thế giới

mydf <- WDI(country = "all", 
            start = 2012, 
            end = 2013, 
            cache = NULL, 
            indicator = c(#Tổng dân số
                          "SP.POP.TOTL", 
                          # Tổng GDP: 
                          "NY.GDP.PCAP.CD",
                          # Lượng phát thải CO2
                          "EN.ATM.CO2E.KT",
                          #Tổng lượng phát thải khí nhà kính
                          "EN.ATM.GHGT.KT.CE"
                          ))
d <- WDIcache() 
d2 <- data.frame(d[[2]])
# Chỉ lấy dữ liệu  năm 2025: 
nam2012 <- mydf %>% filter(year == 2012)
View(nam2012)
#Lấy thêm cột biến về nhóm thu nhập cho các quốc gia
chung <- intersect(d2$country, nam2012$country)

u <-  d2 %>% 
  filter(country %in% chung) %>% 
  arrange(country) %>% 
  mutate(country = as.character(country))
View(u)

nam2012 <- nam2012 %>% 
  filter(country %in% chung) %>% 
  arrange(country)

nam2012$Group <- u$income
#Ko lấy các quốc gia không rõ nhóm thu nhập (Loại Aggreagates)
nam2012 <- nam2012 %>% filter(Group != "Aggregates")
#Hiển thị một số quốc gia được chọn
note <- c("Vietnam", "China", "India", "Japan", "Thailand", 
           "United States", "Indonesia", "Malaysia", "France", "Quarta", 
          "Singapore", "Australia", "Russian Federation","Brazil",
          "Kenya","United Arab Emirates", "Iceland", "Dominica",
          "Timor Leste","Tuvalu","Bangladesh", "Zimbabwe","Haiti",
          "Netherlands", "Norway","Bhutan", "Timor-Leste","Guam",
          "Rwanda")

Biểu diễn mối quan hệ giữa GDP bình quân đầu người và lượng khí nhà kính của các quốc gia năm 2012, đồng thời quy mô dân số của mỗi quốc gia bằng độ lớn của đường tròn

ggplot(nam2012, aes(NY.GDP.PCAP.CD, EN.ATM.GHGT.KT.CE, 
                    size = SP.POP.TOTL, #Lấy kích cỡ hình tròn là dân số
                    colour = Group)) +  #Tô mầu theo nhóm thu nhập
  geom_point(alpha = 1, show.legend = FALSE) + #Ko thể hiện legend
  
  scale_size(range = c(0, 20)) +  #Giới hạn kích cỡ của hình tròn
  theme_fivethirtyeight() + 
  scale_color_wsj(palette = "colors6")+
  # Điền tên các quốc gia vào hình vẽ
  geom_text_repel(size = 3, aes(label = country),  #chọn điền tên theo quốc gia
                  data = subset(nam2012, country %in% note),  #điền tên dựa vào tên một số quốc gia đã tạo ở trên
                  colour = "black",  #mầu chữ
                  force = 10) + 
  labs(x = "GDP bình quân đầu người (US$)", 
       y = "Lượng khí nhà kính (nghìn tấn CO2 quy đổi)", 
       title = "Hình 3: Mối quan hệ giữa khí nhà kính và GDP bình quân đầu người", 
       caption =  "Nguồn: The World Bank, 2012")+
  scale_x_continuous(limits = c(500, 64000),   #Chọn số đo trục x trong khoảng 500 tới 64000
                     breaks = c(1000,4000,16000,64000), #Chỉ biểu diễn trục x bằng những số 1000, 4000, 16000 và 64000
                     trans= log2_trans(), # Đổi lại trục theo hệ tọa độ log2
                                          # ý nghĩa: Cứ lên một đơn vị thì số mới gấp đôi số trước
                     labels = comma)+     # đánh dấu , để số cho dễ nhìn
  scale_y_continuous(trans= log10_trans(),# đổi trục y theo hệ tọa độ log 10
                     breaks = c(100, 10000, 1000000), #Chỉ điền các số 100, 10000, 10000000 ở trục Y
                     labels = comma)+     
  stat_smooth(aes(group = 1), method = "lm", formula = y ~ x , #Thêm đường hồi quy bậc 1
              se = FALSE, show.legend = FALSE)
## Warning: Removed 62 rows containing non-finite values (stat_smooth).
## Warning: Removed 62 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_text_repel).