R 根据因素改变背景,不在ggplot2中工作

R 根据因素改变背景,不在ggplot2中工作,r,ggplot2,R,Ggplot2,我有一名运动员的数据,以及他们在每一场比赛中所处的位置。每个季度最多持续20分钟 我想画出这个球员在每个位置上花费的时间,并根据位置改变颜色。我的问题是,所以我在ggplot2中使用了geom\rect代码 我的数据示例如下: # Sample data.frame df <- data.frame(Time=c(0, 5.35, 19.26, 23.32, 9.08, 13.11, 0, 0,

我有一名运动员的数据,以及他们在每一场比赛中所处的位置。每个季度最多持续20分钟

我想画出这个球员在每个位置上花费的时间,并根据位置改变颜色。我的问题是,所以我在
ggplot2
中使用了
geom\rect
代码

我的数据示例如下:

# Sample data.frame
df <- data.frame(Time=c(0, 5.35, 19.26, 23.32, 
                            9.08, 13.11, 0, 0, 
                            7.36, 2.51, 6.44, 22.47,
                            0, 24.38, 11.36), 
                     Athlete = c('Paul', 'Paul', 'Paul', 'Paul',
                                 'Paul', 'Paul', 'Paul','Paul',
                                 'Paul', 'Paul', 'Paul','Paul',
                                 'Paul', 'Paul', 'Paul'),
                     Quarter = c('Q1', 'Q1', 'Q1', 'Q1', 
                                'Q2', 'Q2', 'Q2', 'Q3', 
                                'Q3', 'Q3', 'Q4', 'Q4', 
                                'Q4', 'Q4', 'Q4'),
                     Position = c('Bench','Defender','Bench','Defender',
                                 'Bench','Defender','Defender','Defender',
                                 'Defender','Bench','Bench','Bench', 
                                 'Defender', 'Defender', 'Defender'))
#Sample data.frame

df我可以通过简单地对数据帧重新排序得到所需的图,以便时间是连续的。我使用以下代码创建了所需的绘图:

# Order data.frame
attach(df)
df <- df[order(Athlete, Quarter, Time),]
# Re-plot
ggplot(df, aes(x = Time, y = Value)) +
  geom_rect(aes(NULL, NULL, 
                xmin=Time, xmax=30, 
                ymin=0, ymax=50, 
                fill = Position)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, 50)) + 
  scale_x_continuous(expand = c(0, 0), limits = c(0, 30)) + 
  theme_classic() +
  theme(legend.position = "bottom", 
        axis.title.x = element_blank(), 
        axis.title.y = element_blank(), 
        axis.text.y = element_blank(),
        axis.text.x = element_text(face = "bold", colour = "black", size = 10),
        axis.ticks.y = element_blank(), 
        axis.line.y = element_blank(), 
        panel.spacing = unit(1.5, "lines"), 
        strip.text = element_text(color = "black", size = 12, face = "bold")) +
  facet_wrap(~ Quarter, nrow = 1)
#Order data.frame
附加(df)

df由于设置了xmax=30,所以矩形被覆盖。您可以使用alpha=0.5来查看它。谢谢,我如何设置xmax以确保我正确地看到它?关于数据,有太多我不了解的事情需要我回答。我想这是某种足球术语,时间和季度等的含义让我难以理解。
# Order data.frame
attach(df)
df <- df[order(Athlete, Quarter, Time),]
# Re-plot
ggplot(df, aes(x = Time, y = Value)) +
  geom_rect(aes(NULL, NULL, 
                xmin=Time, xmax=30, 
                ymin=0, ymax=50, 
                fill = Position)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, 50)) + 
  scale_x_continuous(expand = c(0, 0), limits = c(0, 30)) + 
  theme_classic() +
  theme(legend.position = "bottom", 
        axis.title.x = element_blank(), 
        axis.title.y = element_blank(), 
        axis.text.y = element_blank(),
        axis.text.x = element_text(face = "bold", colour = "black", size = 10),
        axis.ticks.y = element_blank(), 
        axis.line.y = element_blank(), 
        panel.spacing = unit(1.5, "lines"), 
        strip.text = element_text(color = "black", size = 12, face = "bold")) +
  facet_wrap(~ Quarter, nrow = 1)