Как создать выпуклую область (соединенную линиями) после использования "chull" на R - PullRequest
0 голосов
/ 15 января 2020

Из большого Dataframe с информацией от теннисистов, я создал df только с ударов слева и справа от одного игрока, который включает столбцы с именами, возрастом и координатами «x, y» того места, где были сделаны снимки. Я уже сделал графику c с теннисным кортом и местами, где были сделаны снимки, но мне трудно создать выпуклый корпус.

Для создания первой графики c я использовал :

Grph <- ggplot() +
  geom_point(BH, mapping = aes(x = x1 - 58.015,y = y1,
             fill = factor(BH$Result)), shape = 21, size = 5) + 
  guides(fill = guide_legend(title = NULL)) +
....

тогда я попытался:

BHF <- chull(BH)

и я получил числа, но я не могу сделать график c с внешними линиями.

Что следующее не имеет смысла для меня (да, я новичок в этом):

X <- matrix(stats::rnorm(2000), ncol = 2)
chull(X)
plot(X, cex = 0.5)
hpts <- chull(X)
hpts <- c(hpts, hpts[1])
lines(X[hpts, ])

Некоторые из подмножеств, которые я использовал:

data_B1 <- subset(full_data, Player == ch_player & Opp == 
ch_opp &Local == match & Type == event1)
data_B2 <- subset(full_data, Player == ch_player & Opp == ch_opp
&Local == match & Type == event2)

после создания подсетей, которые я использовал rbind для создания BH DF

событие1 - защитные удары, событие2 - наступательные удары

1 Ответ

0 голосов
/ 16 января 2020
BH = data.frame(x = rnorm(2000), y= rnorm(2000))  # create a dummy example data.frame
BHL = chull(BH[, c("x", "y")]) # calculate convex hull for x and y columns
BHL = c(BHL, BHL[1]) # add the first point again at the end, so the path loops back to the beginning

#now plot using geom_path 
ggplot(BH, aes(x,y)) +
  geom_point() +
  geom_path(data=BH[BHL, ])

enter image description here

...