Как настроить направление моей стрелки в ggplot2?

#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))
 

введите описание изображения здесь