r - 如何在 R 中可视化玩家之间的传球流量数据?

标签 r visualization data-visualization

我有一场篮球比赛的传球流量数据,有 100 多行表明同一球队的球员之间的传球,如下所示:

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

我想可视化这些数据,如下图所示。在每一行,我想在玩家之间画一条线。例如,在第一行之后,球从“球员21”移动到“球员12”,此时,我想在“球员21和12”之间画一条线,方向并不重要。

示例图像:http://img5.imageshack.us/img5/9885/samplex.gif

我还想为这些线赋予颜色[创建颜色图例],它将说明玩家之间发生了多少次传球。例如,如果“球员 12 和 21”之间的线是“绿色”,则根据“颜色图例”,这将意味着他们之间的传球位于“XXX”上方。

我怎样才能想象这个?

谢谢

最佳答案

这是一种使用ggplot2的方法。使用 this post 中的想法我们通过使用 ImageMagick 将其转换为 *.ppm 来添加背景图像。玩家的位置位于coords中,因此您可能想要更改它们,但由于ylimxlim,它们将保留在正确的区域中.

enter image description here

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

关于r - 如何在 R 中可视化玩家之间的传球流量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826363/

相关文章:

python - 如何生成像谷歌分析访客流这样的图形/图表?

visualization - 如何在 PowerBI 簇状柱形图上显示缺失的日期

r - 将行扁平化为一行,其中每列只有一个值,并与相似的结果数据框垂直组合

R:安装失败 Slidify - 错误:命令失败 (1) 未被识别为 i/e 命令

if-statement - 如何对一项度量执行两种不同的聚合,并进一步聚合结果以在 Tableau 中将其视为一项聚合度量

javascript - 是什么让网格线可见?

r - 是否可以使用自定义图片作为条形图中的条形?

r - 使用 R markdown 和 knitr 生成 PDF 文件,将 R 对象用于 YAML header

regex - 如何在R中的list.files中执行复杂的正则表达式

google-maps - 在 Google map 中创建世界分区统计​​图