2016-06-07 15 views
7

Sto utilizzando ggplot2 in R per produrre un grafico a dispersione di punti ordinati in un dataframe unito da una linea continua. Su questa linea vorrei posizionare diverse punte di freccia che mostrano l'ordine dei punti nel dataframe. Posso posizionare una freccia tra ciascun punto adiacente, come mostrato di seguito, ma man mano che aggiungo più punti il ​​grafico diventa affollato di punte di freccia e disordinato. C'è un modo in cui posso mettere punte di freccia tra ogni 2, 3, 4 punti contigui?Controllo del numero di teste di freccia

library(ggplot2) 
library(grid) 

b = c(1,2,3,6,7,5,4,3,2,3,4,6,8,9,9,8,9,11,12) 
c = c(2,3,2,4,4,6,8,7,5,4,3,5,9,9,8,8,10,11,15) 
df = data.frame(b, c) 

ggplot(df, aes(x=b, y= c)) + 
    geom_point() + 
    geom_segment(aes(xend=c(tail(b, n=-1), NA), yend=c(tail(c, n=-1), NA)), 
       arrow=arrow(length=unit(0.4,"cm"), type = "closed")) 

Esempio grafico: enter image description here

+1

È possibile utilizzare sottoinsieme dei tuoi dati per le frecce. – zx8754

risposta

2

Ecco il mio suggerimento

# add columns which have values only in rows you want arrows for 
df$d<-NA 
df$d[2:4]<-df$b[2:4] 
df$e<-NA 
df$e[2:4]<-df$c[2:4] 
# and then plot 
ggplot(df, aes(x=b, y= c)) + 
    geom_point() + 

    geom_segment(aes(xend=c(tail(b, n=-1), NA), yend=c(tail(c, n=-1), NA)), 
       )+ 
    geom_segment(aes(xend=c(tail(d, n=-1), NA), yend=c(tail(e, n=-1), NA)), 
       arrow=arrow(length=unit(0.4,"cm"),type = "closed") 
       ) 

enter image description here

+1

Sì, sono d'accordo che questa è una soluzione e immagino che questo sia in linea con la stratificazione della grammatica della grafica, ma sembra un peccato avere colonne di dati parzialmente duplicate nel dataframe. – RoachLord

Problemi correlati