#r #ggplot2
Вопрос:
Я создаю ggplot
диаграмму, на которой я хочу, чтобы между двумя точками было несколько стрелок. Основная задача легко решается geom_line(arrow = arrow())
, но, как вы можете видеть, стрелка не указывает правильное направление от «Previo» к «Фактическому» для некоторых наблюдений (Германия, Франция). Это мой код:
Countries = c("Eurozone","Eurozone","France","France","Germany","Germany","Japan","Japan","United.Kingdom","United.Kingdom","United.States","United.States")
PMI = c(62.5,63.3,59.3,59.2,66.6,66.4,52.7,53.3,58.9,60.7,59.1,60.6)
Delta1M = c(4.6,0.8,3.2,-0.1,5.9,-0.2,1.3,0.6,3.8,1.8,0.5,1.5)
Mes = c("Previo","Actual","Previo","Actual","Previo","Actual","Previo","Actual","Previo","Actual","Previo","Actual")
t1 <- data.frame(Countries,PMI,Delta1M,Mes)
t1$Mes <- factor(t1$Mes, levels = c("Previo","Actual"))
t1 %>% arrange(Countries) %>%
group_by(Countries) %>%
ggplot(aes(x = PMI, y = Delta1M, group = Countries))
geom_point(aes(color = Countries, alpha = Mes), size = 3)
geom_line(arrow = arrow(length=unit(0.15,"cm"), ends="last", type = "closed"))
geom_hline(yintercept = 0)
geom_vline(xintercept = 50)
theme_minimal()
scale_alpha_manual(values = c(0.3,1))
Ответ №1:
Сортировка по Mes и использование geom_path
, похоже, работают, рисуя линию в порядке отсортированных данных, а не на основе прогрессии x.
t1 %>% arrange(Countries, Mes) %>%
ggplot(aes(x = PMI, y = Delta1M, group = Countries))
geom_point(aes(color = Countries, alpha = Mes), size = 3)
geom_path(arrow = arrow(length=unit(0.15,"cm"), ends="last", type = "closed"))
geom_hline(yintercept = 0)
geom_vline(xintercept = 50)
theme_minimal()
scale_alpha_manual(values = c(0.3,1))