Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
在原型archmap上标记点_R - Fatal编程技术网

在原型archmap上标记点

在原型archmap上标记点,r,R,如何从archetypes包向archmap添加标签?或者,是否可以在ggplot中重新创建archmap输出 使用SportsAnalytics演示中的代码(我希望这不是一种糟糕的形式) 库(“运动分析”) 图书馆(“原型”) 数据(“NBAPlayersStatistics0910”) dat如果您不介意稍微调整一下,您可以从archmap()函数基开始,输入一个额外的参数并添加一个text()调用: amap2 <- function (object, a.names, projec

如何从archetypes包向archmap添加标签?或者,是否可以在ggplot中重新创建archmap输出

使用SportsAnalytics演示中的代码(我希望这不是一种糟糕的形式)

库(“运动分析”)
图书馆(“原型”)
数据(“NBAPlayersStatistics0910”)

dat如果您不介意稍微调整一下,您可以从
archmap()
函数基开始,输入一个额外的参数并添加一个
text()
调用:

amap2 <- function (object, a.names, projection = simplex_projection, projection_args = list(), 
          rotate = 0, cex = 1.5, col = 1, pch = 1, xlab = "", ylab = "", 
          axes = FALSE, asp = TRUE, ...) 
{
  stopifnot("archetypes" %in% class(object))
  stopifnot(is.function(projection))
  k <- object$k
  if (k < 3) {
    stop("Need at least 3 archetypes.\n")
  }
  cmds <- do.call(projection, c(list(parameters(object)), projection_args))
  if (rotate != 0) {
    a <- pi * rotate/180
    A <- matrix(c(cos(a), -sin(a), sin(a), cos(a)), ncol = 2)
    cmds <- cmds %*% A
  }
  hmds <- chull(cmds)
  active <- 1:k %in% hmds
  plot(cmds, type = "n", xlab = xlab, ylab = ylab, axes = axes, 
       asp = asp, ...)
  points(coef(object) %*% cmds, col = col, pch = pch)

  ######################
  # PLAY WITH THIS BIT #
  ######################
  text(coef(object) %*% cmds, a.names, pos=4)
  ######################

  rad <- ceiling(log10(k)) + 1.5
  polygon(cmds[hmds, ])
  points(cmds[active, ], pch = 21, cex = rad * cex, bg = "grey")
  text(cmds[active, ], labels = (1:k)[active], cex = cex)
  if (any(!active)) {
    points(cmds[!active, , drop = FALSE], pch = 21, cex = rad * 
             cex, bg = "white", fg = "grey")
    text(cmds[!active, , drop = FALSE], labels = (1:k)[!active], 
         cex = cex, col = "grey20")
  }
  invisible(cmds)
}

amap2(a3, dat$Name)

amap2在下面发布了一个可能的答案,但是由于可视化上有这么多的要点,我看不出有什么方法可以让你得到一个好的文本覆盖。另一个选择是使其具有交互性,以便将鼠标悬停在某个点上可以显示该个人的姓名。太棒了,这看起来会起作用。我的真实数据集出现了一个错误,所以我将看看是否可以解决这个问题。谢谢你的帮助。
amap2 <- function (object, a.names, projection = simplex_projection, projection_args = list(), 
          rotate = 0, cex = 1.5, col = 1, pch = 1, xlab = "", ylab = "", 
          axes = FALSE, asp = TRUE, ...) 
{
  stopifnot("archetypes" %in% class(object))
  stopifnot(is.function(projection))
  k <- object$k
  if (k < 3) {
    stop("Need at least 3 archetypes.\n")
  }
  cmds <- do.call(projection, c(list(parameters(object)), projection_args))
  if (rotate != 0) {
    a <- pi * rotate/180
    A <- matrix(c(cos(a), -sin(a), sin(a), cos(a)), ncol = 2)
    cmds <- cmds %*% A
  }
  hmds <- chull(cmds)
  active <- 1:k %in% hmds
  plot(cmds, type = "n", xlab = xlab, ylab = ylab, axes = axes, 
       asp = asp, ...)
  points(coef(object) %*% cmds, col = col, pch = pch)

  ######################
  # PLAY WITH THIS BIT #
  ######################
  text(coef(object) %*% cmds, a.names, pos=4)
  ######################

  rad <- ceiling(log10(k)) + 1.5
  polygon(cmds[hmds, ])
  points(cmds[active, ], pch = 21, cex = rad * cex, bg = "grey")
  text(cmds[active, ], labels = (1:k)[active], cex = cex)
  if (any(!active)) {
    points(cmds[!active, , drop = FALSE], pch = 21, cex = rad * 
             cex, bg = "white", fg = "grey")
    text(cmds[!active, , drop = FALSE], labels = (1:k)[!active], 
         cex = cex, col = "grey20")
  }
  invisible(cmds)
}

amap2(a3, dat$Name)