Советы GG по построению графика и выделению

#r #ggplot2 #data-visualization

#r #ggplot2 #визуализация данных

Вопрос:

Привет, у меня есть набор данных, который выглядит следующим образом :

 data_08_17 <- data_2%>% filter(year %in%(2008:2017))
  

Часть набора данных для воссоздания:

 >dput(data_08_17[1:6,])
structure(list(year = c(2017L, 2017L, 2017L, 2017L, 2016L, 2016L
), tournament = c("U.S. Open", "Wimbledon", "French Open", "Australian Open",
"U.S. Open", "Wimbledon"), winner = c("Rafael Nadal", "Roger Federer",
"Rafael Nadal", "Roger Federer", "Stan Wawrinka", "Andy Murray"),
runner_up = c("Kevin Anderson", "Marin Cilic", "Stan Wawrinka",
"Rafael Nadal", "Novak Djokovic", "Milos Raonic")), row.names = c(NA,
6L), class = "data.frame")
  

введите описание изображения здесь

Я хотел создать визуальный график с помощью ggplot, показывающий время, когда победители и занявшие вторые места встречались друг с другом в финалах каждого турнира.
Я просто не понимаю, как мне это сделать. Любая помощь будет оценена!!

Комментарии:

1. Теперь я предоставил некоторые примеры данных

Ответ №1:

Ваша структура данных подразумевает сеть или график, и ее лучше всего представить как таковую. Вы можете использовать пакеты igraph и ggraph для создания подходящего графика:

 library(ggraph)
library(igraph)

g <- graph.data.frame(data_08_17[c(3:4, 1:2)])

ggraph(g, layout = 'linear', circular = TRUE)   
  geom_edge_arc(aes(colour = tournament))   
  geom_node_label(aes(label = name))  
  lims(x = c(-1.5, 1.5), y = c(-1.5, 1.5))  
  theme_void()
  

введите описание изображения здесь

Комментарии:

1. Привет, спасибо за ваш комментарий. однако мой график выглядит иначе, поскольку оказывается, что на графике вместо имени игрока показаны 4 турнира и весь год. Я не знаю, как поместить код в комментарий. Но это мой код для графика: data_08_17 <- graph.data.frame(data_08_17[c(3:4, 1:2)]) ty <- ggraph(data_08_17, layout = ‘linear’, circular = TRUE) geom_edge_arc(aes(цвет = data_08_17$ турнир)) geom_node_label(aes(label = name)) lims(x = c (-1.5, 1.5), y = c(-1.5, 1.5)) theme_void()

2. @ChrisTang в данных, которые вы передаете, должны быть игроки в первых двух столбцах. Звучит так, как будто данные, которые вы вводите, отличаются от данных в вашем примере. Если вы используете именно то dput , что вы указали в своем вопросе, и мой точный блок кода, вы получите этот точный график.

3. большое вам спасибо за помощь, и, наконец, я понял это правильно. Но возможно ли показать, сколько раз они встречались друг с другом в финале? Я все еще пытаюсь найти хорошую визуализацию данных для такого типа задач.

Ответ №2:

чтобы представить график, состоящий из двух или более переменных, мы можем попробовать функцию facet_wrap,

 ggplot(data, aes(x = Gr_Liv_Area, y = Sale_Price))   geom_point(alpha = .3) facet_wrap(~ Overall_Qual, nrow = 2)
  

введите описание изображения здесь

или добавьте больше входных данных в ‘aes’ ggplot такого цвета или формы.

 ggplot(data, aes(x = Gr_Liv_Area, y = Sale_Price, color = Central_Air))   geom_point(alpha = .5)
  

введите описание изображения здесь

Комментарии:

1. Извините, но я не понимаю, как это связано с моими вопросами?