Trazado animado de intercambio (trazado de bordes direccionales)

una vez viesta parcela (LINK) en las operaciones de envío. Trabajo con intercambios de diálogos y pensé que podría ser interesante mapear este tipo de intercambio usando R.

Esta es una pregunta más amplia, pero creo que puede ser útil para la comunidad en general.

Digamos que tenemos 7 personas sentadas alrededor de una mesa como esta:

Y he grabado intercambios de diálogos, charlas con los oradores y oyentes. He creado un dummy data.frame con este tipo de información. Aquí está la cabeza:

  speaker receiver duration speaker.x speaker.y receiver.x receiver.y
1       D        A       16     0.626     0.163      0.755      0.741
2       E        D        3     0.391     0.161      0.626      0.163
3       A        B       25     0.755     0.741      0.745      0.517
4       B        E        6     0.745     0.517      0.391      0.161
5       B        C       45     0.745     0.517      0.737      0.251
6       E        F       37     0.391     0.161      0.258      0.285

Me gustaría crear flechas animadas (de orador a receptor) que estén coloreadas por orador y ponderadas (tiempo / duración y longitud y / o grosor) y animadas de la misma manera que los datos de envío (número de fila es el orden en que se produce el discurso). Creo que quizás el paquete de animación puede ser útil aquí, pero no tengo ni idea. Tal vez esto no sea posible con R actualmente (como lo indica la declaración de Ben Schmidt,"Esperaba poder renunciar a ArcGIS para el próximo proyecto de mapa que hago y mantener todo en R. No estoy convencido, después de esta experiencia, de que será posible").

Creo que muchas personas en muchos campos podrían usar este tipo de mapeo de intercambios, simplemente sucede que estoy interesado en un intercambio de diálogo. Eventualmente, dibujaría esto sobre una imagen rasterizada, pero esa es la parte fácil.

Aquí están los datos y las tramas hasta aquí.

#the data
the_table <- data.frame(
    xmin = .3,
    xmax = .7,
    ymin = .2,
    ymax = .8
)

points <- structure(list(x = c(0.754594594594595, 0.744864864864865, 0.736756756756757, 
    0.626486486486486, 0.391351351351351, 0.258378378378378, 0.261621621621622
    ), y = c(0.741172932330827, 0.517052631578947, 0.250706766917293, 
    0.163007518796992, 0.161383458646617, 0.284812030075188, 0.494315789473684
    )), .Names = c("x", "y"))


mapping <- data.frame(person=LETTERS[1:7], points)

set.seed(10)
n <- 120
dat <- data.frame(id = 1:n, speaker=sample(LETTERS[1:7], n, TRUE),
     receiver=sample(LETTERS[1:7], n, TRUE),
    duration=sample(1:50, n, TRUE)
)
dat <- dat[as.character(dat$speaker)!=as.character(dat$receiver), ]

dat <- merge(merge(dat, mapping, by.x=c("speaker"), by.y=c("person"), sort=FALSE), 
    mapping, by.x=c("receiver"), by.y=c("person"), sort=FALSE)
names(dat)[5:8] <- c("speaker.x", "speaker.y", "receiver.x", "receiver.y")
dat <- dat[order(dat$id), c(2, 1, 4:8)]
rownames(dat) <- NULL

#the plot
ggplot() +
    geom_point(data=mapping, aes(x=x, y=y), size=10) +
    geom_text(data=mapping, aes(x=x, y=y, label=as.character(person)), 
        color="blue") +
    ylim(-.2, 1.2) + xlim(-.2, 1.2) + 
    geom_rect(data=the_table, aes(xmax = xmax, xmin=xmin, 
        ymin=ymin, ymax = ymax), fill="gray80")

No estoy casado con ggplot2, pero soy parcial, y parece que muchos de estos tipos de parcelas usan ggplot2.

Respuestas a la pregunta(1)

Su respuesta a la pregunta