Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中的玩家之间可视化此通行流量数据?_R_Visualization_Data Visualization - Fatal编程技术网

如何在R中的玩家之间可视化此通行流量数据?

如何在R中的玩家之间可视化此通行流量数据?,r,visualization,data-visualization,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”之间划一条线,方向并不重要 示例图像: 我还想给这些线加上颜色[创建一个颜色图例],这将说明球员之间的传球次数

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

   Player
1  21
2  12
3   5
4  21
5  12
6   2
7  12
8   5
9   3
..
我想将这些数据可视化,如下图所示。在每一排,我都想在球员之间划一条线。例如,在第一排之后,球从“玩家21”移动到“玩家12”,此时,我想在“玩家21”和“玩家12”之间划一条线,方向并不重要

示例图像:

我还想给这些线加上颜色[创建一个颜色图例],这将说明球员之间的传球次数。例如,根据“颜色图例”,如果“玩家12和21”之间的线为“绿色”,这将意味着他们之间的传球高于“XXX”

我怎样才能想象这一点


谢谢

James Kierstead有一个使用R at的slopegraph示例

David Ruau在

Nathan Yau在他的书《形象化这一点》中,有一个很好的使用斜坡图的示例。如果我没记错的话(我现在没有带这本书),他用R

不幸的是,我无法使用R找到任何和弦图(见下文)


Java选项

本·弗莱有一本书


JavaScript选项

如果您愿意尝试JavaScript,可以使用以下选项:

  • 弦图——2个示例:或
  • 斜坡图--

有关更多示例,请参见。

以下是使用
ggplot2
的方法。我们使用ImageMagick将背景图像转换为
*.ppm
,从而添加背景图像。玩家的位置在
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))

库(ggplot2)
图书馆(pixmap)

数据在R中,可以使用和弦图来实现此目的,通过软件包

您能给出一些我们实际可以读取的样本数据吗,例如,
dput的输出(您的数据[1:20])
?你有玩家位置的坐标吗?@Thilo你可以从那里下载示例:实际上我还没有计算出坐标,你可以简单地给出随机值。@Julius:它给出了2个错误。第一:文件错误(file,open=“rb”):无法打开连接另外:警告消息:文件中(file,open=“rb”):无法打开文件“p.ppm”:没有这样的文件或目录;第二:使用方法错误(“as.raster”):没有适用于“as.raster”的方法@forochelian,您可以发现此特定图像已转换。如果您想使用另一个ImageMagick软件,您必须使用该软件。