Я пытаюсь проанализировать данные о футболе, где конкретные проходы и цели отслеживаются в течение трех периодов игры или срока. Также отслеживается тип защитной структуры или режима, применяемого одной командой. Пример моего набора данных ниже:Как построить отдельные компоненты в горизонтальной гистограмме?
# Example data
Time <- c(1, 1, 2, 3, 4, 5, 6, 9, 1, 2, 3, 5, 5, 7, 9, 1, 2, 4, 7, 9)
Event <- c("Pass", "Pass", "Pass", "Goal", "Pass", "Pass", "Goal", "Pass", "Pass",
"Pass", "Pass", "Pass", "Pass", "Pass", "Pass", "Goal", "Pass", "Pass", "Pass", "Goal")
Term <- c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3)
Symbol <- c("P", "P", "P", "G", "P", "P", "G", "P", "P",
"P", "P", "P", "P", "P", "P", "G", "P", "P", "P", "G")
By <- c("Home", "Away", "Home", "Home", "Home", "Away", "Away", "Away", "Home",
"Home", "Home", "Away", "Away", "Away", "Home", "Home", "Home", "Away", "Away", "Away")
Mode <- c("Press", "Press", "Press", "Forward", "Forward", "Forward", "Forward", "Press", "Press",
"Press", "Press", "Press", "Press", "Forward", "Forward", "Forward", "Forward", "Press", "Press", "Forward")
# Make data.frame
GameData <- data.frame(Time, Event, Term, Symbol, By, Mode)
# Make factors
GameData$Event <- as.factor(GameData$Event)
GameData$Symbol <- as.factor(GameData$Symbol)
GameData$Mode <- as.factor(GameData$Mode)
GameData$Term <- as.factor(GameData$Term)
GameData$By <- as.factor(GameData$By)
Я хочу, чтобы представить себе, когда эти проходы и цели выполняются по времени, в соответствии с тем, когда режим изменяется. Однако, когда я рисую это как показатель горизонтальной полосы в ggplot2
, время вместо этого суммируется, а не изменяется цвет в соответствующее время. Например, максимальное время для каждого слагаемого составляет 9 минут, а ось x - до 30? Мой код участка ниже:
# Load package
require(ggplot2)
# Plot
ggplot(GameData, aes(x = Term, y = Time, fill = Mode)) +
geom_bar(stat = "identity") +
geom_text(data = GameData, aes(label = Symbol, colour = By), size = 9) +
scale_color_manual(values =c("black", "red")) +
coord_flip() +
scale_x_discrete(limits = rev(levels(GameData$Term)))
Я чувствую, что это глупая ошибка, но где я буду неправильно, поэтому изменения цвета/режима в соответствующее время?
Подводя итог, я хочу, чтобы фон графика ниже имел различный цвет для каждого Mode
над Time
для каждого Term
.
# Plot
ggplot(GameData, aes(x = Term, y = Time, fill = Mode)) +
geom_text(data = GameData, aes(label = Symbol, colour = By), size = 9) +
scale_color_manual(values =c("black", "red")) +
coord_flip() +
scale_x_discrete(limits = rev(levels(GameData$Term))) +
theme_classic()
Спасибо.
У меня возникли проблемы с визуализацией того, как вы хотите, чтобы ваш результат выглядел. Не могли бы вы набросать, как вы хотите, чтобы это выглядело, только для термина 1? Я смущен тем, что у вас есть 2 строки с Time = 1 и без строк с Time = 7 или 8, но вам нужна гистограмма с добавлением ... Кажется, что есть дыры. Возможно, вам захочется «geom_tile»? – Gregor
Вы можете сделать 'position = 'identity'', но затем один бар, который идет до 9, закрывает все под ним. – Gregor
Да, я также попробовал 'position =" identity ", однако я не могу визуализировать, когда изменяется режим. Время соответствует событию, но «Срок» длится не более 9 минут. – user2716568