library(tidyverse)
library(plotly)
library(knitr)
library(ggplot2)
library(dplyr)
library(maps)
library(mapdata)
library(readxl)
df <- readxl::read_excel("данные.xlsx")

total_emissions <- df %>%
  group_by(Country) %>%
  summarise(Total_Emissions = sum(Value))

top_emitters <- total_emissions %>% arrange(desc(Total_Emissions)) %>% head(5)
bottom_emitters <- total_emissions %>% arrange(Total_Emissions) %>% head(5)

Введение

Уровень выбросов парниковых газов, включая углекислый газ (CO2), является одним из наиболее обеспокоенных аспектов современной экологической проблематики. В связи с ускоренной индустриализацией и расширением производства на протяжении последних десятилетий уровень выбросов углекислого газа стал одной из главных угроз для нашей планеты.

Данный проект проведет анализ уровня выбросов углекислого газа в различных странах мира. Целью проекта является выявление тенденций и различий в выбросах CO2 между различными странами.

Анализ выбросов углекислого газа имеет критическое значение для понимания влияния различных стран на изменение климата и разработки стратегий для сокращения выбросов парниковых газов в целом.

5 стран с наибольшими выбросами

top_emitters_ <- total_emissions %>% arrange(desc(Total_Emissions)) %>% head(5)
new_column_names <- c("Страна", "Значение выбросов")
colnames(top_emitters_) <- new_column_names
kable(top_emitters_)
Страна Значение выбросов
Qatar 702.3042
Kuwait 478.4243
United Arab Emirates 432.5679
Bahrain 417.1873
Luxembourg 388.6949

5 стран с наименьшими выбросами

bottom_emitters_ <- total_emissions %>% arrange(Total_Emissions) %>% head(5)
new_column_names <- c("Страна", "Значение выбросов")
colnames(bottom_emitters_) <- new_column_names
kable(bottom_emitters_)
Страна Значение выбросов
Democratic Republic of the Congo 0.5826329
Burundi 0.6647044
Somalia 0.9946838
Central African Republic 1.2315039
Rwanda 1.2757444
total_emissions <- total_emissions %>%
  mutate(Category = case_when(
    Country %in% top_emitters$Country ~ "Наибольшие выбросы", # В топ-5 по выбросам
    Country %in% bottom_emitters$Country ~ "Наименьшие выбросы", # В топ-5 по минимальным выбросам
    Country %in% "Russian Federation" ~ "Russian Federation",
    Country %in% "Kazakhstan" ~ "Kazakhstan",
    TRUE ~ " Other" # Все остальные
  ))

Выбросы углекислого по странам

Таким образом, график позволяет наглядно продемонстрировать различия в уровне выбросов углекислого газа между топовыми странами и остальными, а также выделяет ключевые страны-источники выбросов.

p <- ggplot(total_emissions, aes(x = reorder(Country, Total_Emissions), color = Category)) +
  geom_point(aes(y = Total_Emissions), size = 3, shape = 17) +
  scale_color_manual(values = c(
    "Наибольшие выбросы" = "red", 
    "Наименьшие выбросы" = "green", 
    "Russian Federation" = "blue", 
    "Kazakhstan" = "yellow", 
    "Other" = "grey"
  )) +
  labs(title = "Выбросы углекислого газа по странам", x = "Страна", y = "Суммарные выбросы") +
  coord_cartesian(ylim = c(min(total_emissions$Total_Emissions), max(total_emissions$Total_Emissions))) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
plotly::ggplotly(p)
world_map_data <- map_data("world")
combined_data <- world_map_data %>%
  left_join(total_emissions, by = c("region" = "Country"))
co2_map <- ggplot(data = combined_data) +
  geom_polygon(aes(x = long, y = lat, group = group, fill = Total_Emissions), color = "black") +
  scale_fill_gradient(low = "lightblue", high = "red", na.value = "grey50") +
  labs(title = "Выбросы CO2 по странам",
       fill = "Выбросы CO2 (млн тонн)") +
  theme_minimal() +
  theme(legend.position = "right")
print(co2_map)

Выбросы по топовым странам, России и Казахстану

Казахстан и Россия находятся на среднем уровне по выбросам.

ggplot(total_emissions, aes(x = reorder(Country, Total_Emissions), y = Total_Emissions, color = Category)) +
  geom_point(data = subset(total_emissions, Category %in% c("Наибольшие выбросы", "Наименьшие выбросы", "Russian Federation", "Kazakhstan")), size = 3, shape = 17) +
  scale_color_manual(values = c(
    "Наибольшие выбросы" = "red", 
    "Наименьшие выбросы" = "green", 
    "Russian Federation" = "blue", 
    "Kazakhstan" = "yellow"
  )) +
  labs(title = "Выбросы углекислого газа по странам", x = "Страна", y = "Суммарные выбросы")+
  scale_y_continuous(breaks = seq(0, 750, by = 50)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

Выбросы в разные года

Сохраняются позиции стран в топе по выбросам.

df1 <- df %>%
  mutate(Category = case_when(
    Country %in% top_emitters$Country ~ "Наибольшие выбросы", # В топ-5 по выбросам
    Country %in% bottom_emitters$Country ~ "Наименьшие выбросы", # В топ-5 по минимальным выбросам
    Country %in% "Russian Federation" ~ "Russian Federation",
    Country %in% "Kazakhstan" ~ "Kazakhstan",
    TRUE ~ " Other" # Все остальные
  ))
ggplot(df1, aes(x = reorder(Country, Value), y = Value, color = Category)) +
  geom_point(data = subset(df1, Category %in% c("Наибольшие выбросы", "Наименьшие выбросы", "Russian Federation", "Kazakhstan")), size = 3, shape = 17) +
  scale_color_manual(values = c(
    "Наибольшие выбросы" = "red", 
    "Наименьшие выбросы" = "green", 
    "Russian Federation" = "blue", 
    "Kazakhstan" = "yellow"
  )) +
  labs(title = "Выбросы углекислого газа по странам", x = "Страна", y = "Выбросы")+
  scale_y_continuous(breaks = seq(0, 100, by = 10)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  facet_wrap(~Year)

Динамика выбросов в Казахстане и России

Данные о выбросах СО2 по годам для Казахстана и России.

df_filtered <- df1 %>% 
  filter(Category %in% c("Russian Federation", "Kazakhstan"))
data <- readxl::read_excel("Новая таблица.xlsx") 
selected_country <- "Russian Federation"
country_data <- data %>% filter(Country == selected_country)
ggplot(country_data, aes(x = Год, y = Выбросы)) +
  geom_line(color = "blue", size = 3) +  
  geom_point(color = "red", size = 4) +  
  labs(title = paste("Выбросы CO2 по годам в", selected_country),
       x = "Год",
       y = "Выбросы CO2") +
  theme_minimal()

data <- readxl::read_excel("Новая таблица.xlsx") 
selected_country <- "Kazakhstan"
country_data <- data %>% filter(Country == selected_country)
ggplot(country_data, aes(x = Год, y = Выбросы)) +
  geom_line(color = "blue", size = 3) +  
  geom_point(color = "red", size = 4) +  
  labs(title = paste("Выбросы CO2 по годам в", selected_country),
       x = "Год",
       y = "Выбросы CO2") +
  theme_minimal()

По линии тренда мы можем увидеть тенденцию к увеличению выбросов в обоих странах.

ggplot(df_filtered, aes(x = as.factor(Year), y = Value, color = Category, group = Category)) +
  geom_line(size = 1) + 
  geom_smooth(method = "lm", formula = "y~x") +
  scale_color_manual(values = c(
    "Наибольшие выбросы" = "red", 
    "Наименьшие выбросы" = "green", 
    "Russian Federation" = "blue", 
    "Kazakhstan" = "yellow"
  )) +
  labs(title = "Выбросы углекислого газа по странам", x = "Страна", y = "Выбросы") +
  scale_y_continuous(breaks = seq(0, 15, by = 1)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  facet_wrap(~Category)