#Source: https://t.me/rstudioprogr
#link on data file: https://docs.google.com/spreadsheets/d/1kBFAkBRiCXKfZA68CaZN0FyCnRtut4eN/edit?usp=sharing&ouid=103177799370390773118&rtpof=true&sd=true

library(readxl)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(tidyr)
PMI_Russia_data <- read_excel("PMI_Russia_data.xlsx") %>% as.data.frame()
PMI_Russia_data
##          Date Composite Manufacturing Services
## 1  2024-01-01      55.1          52.4     55.8
## 2  2024-02-01      52.2          54.7     51.1
## 3  2024-03-01      52.7          55.7     51.4
## 4  2024-04-01      51.9          54.3     50.5
## 5  2024-05-01      51.4          54.4     49.8
## 6  2024-06-01      49.8          54.9     47.6
## 7  2024-07-01      51.9          53.6     51.1
## 8  2024-08-01      52.1          52.1     52.3
## 9  2024-09-01      49.4          49.5     50.5
## 10 2024-10-01      50.9          50.6     51.6
## 11 2024-11-01      52.6          51.3     53.2
## 12 2024-12-01      51.1          50.8     51.2
## 13 2025-01-01      54.7          53.1     54.6
# Определение последних значений для подписи

data1 <- PMI_Russia_data %>% group_by(Date) %>% pivot_longer(cols = "Composite":"Services", values_to = "Values", names_to = "Names")

target_date <- as.POSIXct("2025-01-01", format = "%Y-%m-%d")

last_value <- data1 %>% 
  filter(Date %in% target_date) %>%
  select(Date, Names, Values)

ggplot(data = data1, aes(x = Date, y = Values, color = Names)) + 
  theme(legend.position = "bottom", 
        panel.background = element_blank(),  # Внутренняя область пустая
        panel.border = element_rect(color = "grey", fill = NA, size = 1),  # Серая граница
        plot.background = element_blank()) + labs(y = "Значение", x = "", legend = "Названия индексов") + geom_smooth(method = "loess", se = FALSE, span = 0.4) + 
  geom_hline(yintercept = 50, linetype = "dashed", color = "grey3") +  # Добавление штриховой линии на уровне 50
  geom_text_repel(data = last_value, aes(label = Values), 
                  box.padding = -1) + scale_color_manual(values = c("#885188", "#3F8ADB", "#DD7ADD")) + 
  scale_x_datetime(date_labels = "%b %y",  # Изменяем формат даты и времени
                   date_breaks = "1 month") # Указываем, как часто отображать метки