私はかつてこのプロット (リンク)を出荷取引で見ました。私は対話交換を扱っており、R を使用してこの種の交換をマッピングすることは興味深いかもしれないと考えました。
これはより大きな質問ですが、コミュニティ全体に役立つと思います。
次のようなテーブルの周りに 7 人が座っているとします。
そして、スピーカートークとリスナーが聞く会話交換を収録しています。この種の情報を含むダミーの data.frame を作成しました。ここに頭があります:
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
スピーカーごとに色付けされ、重み付けされ (時間/持続時間、長さおよび/または太さ)、出荷データと同じ方法でアニメーション化された (スピーカーからレシーバーへの) アニメーション矢印 (スピーカーからレシーバーへ) を作成したいと思います (行番号は、スピーチが発生します)。 ここではアニメーション パッケージが役立つかもしれないと思いますが、手がかりはありません。おそらく、これは現在の R では不可能です (Ben Schmidt の声明で示されているように、「次のマップ プロジェクトでは ArcGIS をあきらめて、すべてを R に保持できることを望んでいましたが、そうではありません。この経験の後、それが可能になると確信した」)。
さまざまな分野の多くの人がこの種の交換のマッピングを使用できると思いますが、たまたま私が対話の交換に興味を持っているだけです。最終的には、これをラスター イメージの上にプロットしますが、それは簡単な部分です。
ここまでのデータとプロットは次のとおりです。
#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")
私は ggplot2 と結婚していませんが、それに部分的です。これらの種類のプロットの多くは ggplot2 を使用しているようです。