#Source: https://t.me/rstudioprogr
library(ggplot2)
library(reshape)
library(ggrepel)
library(ggbreak)
data_shares <- data.frame(Ticker = c("IVAT", "NLMK", "SBER", "MTSS", "WUSH", "TRNFP"),
Current_Price = c(260, 169.36, 319.75, 281.6, 269.14, 1515),
Target_Price = c(350, 216.75, 360, 324.2, 355, 1600))
data_shares2 <- melt(data_shares, id.vars = "Ticker")
data_shares2 <- data_shares2[order(data_shares2$Ticker), ]
head(data_shares2)
## Ticker variable value
## 1 IVAT Current_Price 260.00
## 7 IVAT Target_Price 350.00
## 4 MTSS Current_Price 281.60
## 10 MTSS Target_Price 324.20
## 2 NLMK Current_Price 169.36
## 8 NLMK Target_Price 216.75
ggplot(data_shares2, aes(x = value, y = Ticker)) + geom_point(aes(color = variable), size = 3) +
geom_line(arrow = arrow(length=unit(0.30,"cm"), ends="last", type = "closed")) +
theme_minimal() + xlab("") + ylab("Тикеры компаний") +
ggtitle("Отражение целевой и текущей цены по компаниям") +
scale_x_break(c(360, 1500)) +
geom_text(aes(label = round(value,0)), hjust=0.5, vjust=-1) +
scale_color_manual(labels = c("Текущая", "Целевая"),
values = c("darkblue", "lightblue")) + labs(color = "Цена", caption = "Telegram: @rstudioprogr") +
theme(panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank(),
axis.text.x = element_blank(), axis.ticks.x = element_blank(),
legend.position = "bottom",
legend.text = element_text(size = 13),
legend.title = element_text(size = 13),
axis.title.y = element_text(size = 13),
axis.text.y = element_text(size = 13),
title = element_text(size = 13)) +
annotate("label", x=(260+350)/2, y='IVAT', label= "+34,6%", color = "#6D8C00") +
annotate("label", x=(169.36+216.75)/2, y='NLMK', label= "+27,9%", color = "#6D8C00") +
annotate("label", x=(319.75+360)/2, y='SBER', label= "+12,6%", color = "#6D8C00") +
annotate("label", x=(281.6+324.2)/2, y='MTSS', label= "+15,1%", color = "#6D8C00") +
annotate("label", x=(269.14+355)/2, y='WUSH', label= "+31,9%", color = "#6D8C00") +
annotate("label", x=(1515+1600)/2, y='TRNFP', label= "+5,6%", color = "#6D8C00")
