Zeichnen von animiertem Austausch (Zeichnen von Richtungskanten)

Ich habe es einmal gesehendiese Handlung (LINK) auf Schifffahrtsgeschäfte. Ich arbeite mit Dialogaustausch und dachte, es könnte interessant sein, diese Art von Austausch mit R abzubilden.

Dies ist eine größere Frage, aber ich denke, dass sie für die gesamte Community nützlich sein kann.

Nehmen wir an, wir haben 7 Leute, die so an einem Tisch sitzen:

Und ich habe Dialogaustausche mit Sprechern und Zuhörern aufgezeichnet. Ich habe einen Dummy-Datenrahmen mit diesen Informationen erstellt. Hier ist der Kopf:

  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

Ich möchte animierte Pfeile (vom Lautsprecher zum Empfänger) erstellen, die nach Lautsprecher gefärbt und gewichtet (Zeit / Dauer und Länge und / oder Dicke) und auf die gleiche Weise wie die Versanddaten animiert sind (Zeilennummer ist die Reihenfolge, in der) die Rede findet statt). Ich denke, dass vielleicht das Animationspaket hier nützlich sein kann, aber keine Ahnung hat. Vielleicht ist dies mit R derzeit nicht möglich (wie aus der Aussage von Ben Schmidt hervorgeht,"Ich hatte gehofft, dass ich ArcGIS für das nächste Kartenprojekt, das ich mache, aufgeben und alles in R behalten kann. Nach dieser Erfahrung bin ich nicht davon überzeugt, dass dies möglich sein wird.").

Ich denke, dass viele Menschen in vielen Bereichen diese Art der Abbildung von Austausch verwenden könnten. Es kommt einfach vor, dass ich an einem Austausch von Dialogen interessiert bin. Schließlich würde ich dies über ein Rasterbild zeichnen, aber das ist der einfache Teil.

Hier sind die Daten und Grafiken soweit.

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

Ich bin nicht mit ggplot2 verheiratet, aber ich bin ein Teil davon, und es scheint, dass viele dieser Arten von Handlungen ggplot2 verwenden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage