Troca animada de plotagem (plotagem de bordas direcionais)

Uma vez vieste enredo (LINK) em negociações de envio. Eu trabalho com trocas de diálogo e achei que seria interessante mapear esse tipo de troca usando R.

Esta é uma questão maior, mas acho que pode ser útil para a comunidade em geral.

Vamos dizer que temos 7 pessoas sentadas em volta de uma mesa como esta:

E eu gravei diálogos, trocas de oradores e ouvintes. Eu criei um data.frame fictício com esse tipo de informação. aqui está a cabeça:

  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

Eu gostaria de criar setas animadas (de alto-falante para receptor) que são coloridas por alto-falante e ponderadas (tempo / duração e comprimento e / ou espessura) e animadas da mesma forma que os dados de remessa (número da linha é a ordem na qual o discurso ocorre). Eu acho que talvez o pacote de animação possa ser útil aqui, mas não tenha nenhuma pista. Talvez isso não seja possível com R atualmente (como indicado pelo comunicado de Ben Schmidt,"Espero poder desistir do ArcGIS para o próximo projeto de mapa que eu faço e manter tudo em R - não estou convencido depois dessa experiência que será possível").

Eu acho que muitas pessoas em muitos campos poderiam usar esse tipo de mapeamento de intercâmbios, só acontece que eu estou interessado em uma troca de diálogo. Eventualmente eu planejo isso em cima de uma imagem rasterizada, mas essa é a parte fácil.

Aqui estão os dados e tramas até agora.

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

Eu não sou casado com ggplot2, mas sou parcial, e parece que muitos desses tipos de gráficos usam ggplot2.

questionAnswers(1)

yourAnswerToTheQuestion