2

バスケットボールの試合のパストラフィックデータがあります。同じチームのプレーヤー間のパスを示す100以上の行があります。

   Player
1  21
2  12
3   5
4  21
5  12
6   2
7  12
8   5
9   3
..

下の画像のように、このデータを視覚化したいです。すべての行で、プレイヤー間に線を引きたいと思います。例えば、1列目以降は「プレーヤー21」から「プレーヤー12」にボールが移動しますが、その時点で「プレーヤー21と12」の間に線を引きたいのですが、方向は関係ありません。

サンプル画像: http: //img5.imageshack.us/img5/9885/samplex.gif

また、これらの線に色を付けて[色の凡例を作成]、プレーヤー間で発生するパスの数を示します。たとえば、「プレーヤー12と21」の間の線が「緑」である場合、これは、「カラーレジェンド」によると、それらの間のパスが「XXX」の上にあることを意味します。

これをどのように視覚化できますか?

ありがとう

4

3 に答える 3

4

これがを使用したアプローチggplot2です。この投稿のアイデアを使用して*.ppm、ImageMagickで変換して背景画像を追加します。プレイヤーの位置はにあるcoordsので、変更したいかもしれませんが、そのためylim、プレイヤーはxlim正しいエリアに留まります。

ここに画像の説明を入力してください

library(ggplot2)
library(pixmap)

data <- data.frame(Player = c(2, 12, 21, 5, 3, 21, 5, 12, 3, 12, 21, 5))
p <- data.frame(Pass1 = data[-nrow(data), ], Pass2 = data[-1, ])
p <- apply(p, 1, function(i) paste(sort(i), collapse = " "))
p <- factor(table(p)[p])
coords <- replicate(2, runif(nrow(unique(data))))
xmap <- setNames(coords[,1], unique(data$Player))
ymap <- setNames(coords[,2], unique(data$Player))
plotData <- data.frame(x = xmap[as.character(data$Player)], 
                       y = ymap[as.character(data$Player)],
                       Player = factor(data$Player))
plotData <- plotData[rep(1:nrow(plotData), each = 2),]
plotData <- cbind(plotData[-c(1, nrow(plotData)),], id = rep(p, each = 2))
image <- read.pnm("p.ppm")

as.raster.pixmapRGB <- function(x) {
  nr <- nrow(x@red)
  r <- rgb((x@red), (x@green), (x@blue))
  dim(r) <- x@size
  r
}

ggplot(plotData, aes(x = x, y = y, label = Player)) +
  annotation_raster(image, -Inf, Inf, -Inf, Inf, interpolate = TRUE) + 
  geom_text(vjust = -1, colour = "red") + xlab(NULL) + ylab(NULL) +
  geom_point(size = 5) + geom_path(aes(colour = id)) + xlim(c(-0.1, 1.1)) +
  theme(axis.ticks = element_blank(), axis.text = element_blank()) +
  scale_colour_discrete(name = "Number of passes") + ylim(c(-0.1, 1.1))
于 2012-12-11T19:48:13.127 に答える
1

James Kiersteadは、http: //www.jameskeirstead.ca/r/slopegraphs-in-r/でRを使用したスロープグラフの例を示しています。

David Ruauは、 https: //github.com/bobthecat/codebox/blob/master/table.graph.rにslopegraphRプログラムを持っています。

Nathan Yauは、彼の著書Visualize Thisで、スロープグラフを使用した素晴らしいサンプルを持っています。私が正しく思い出せば(今は本を持っていません)、彼はRを使用します。

残念ながら、Rを使用してコード図を見つけることができませんでした(以下を参照)。


Javaオプション

Ben Fryは、Java/Processingを使用したスロープグラフのデモを行っています


JavaScriptオプション

JavaScriptを試してみたい場合は、D3を使用するいくつかのオプションがあります。

その他の多くの例については、 D3ギャラリーを参照してください。

于 2012-12-11T19:28:01.047 に答える
0

Rでは、circlizeパッケージを使用して、この目的でコード図を使用できます。

于 2014-11-02T17:37:03.110 に答える