向ggplot折线图添加空格

Adding spaces to ggplot line graph

我总共有 39 周的平均力量和敏捷度数据。

但是在第 10 周,没有收集到任何数据。

当我绘制折线图来显示这些数据时,如何放置一个空间距来指示第 10 周的缺失值? 即折线图仅绘制第 9 周和第 11 周(最适合第 10 周的拟合线)

它目前按列条目数绘制它,所以看起来我有 38 周的连续数据,这是误导性的。

我当前绘制此代码的代码是:

strength <- data %>% select(contains("stregnth_fac_")) %>% colMeans(., na.rm = TRUE)
agility <- data %>% select(contains("agility_fac_")) %>% colMeans(., na.rm = TRUE)

strength <- as.data.frame(strength)                                            
agility  <- as.data.frame(agility)      
                                        
x <- 1:38

colors <- c("strength" = "blue", "agility" = "red")

plot + scale_x_continuous(breaks=seq(0,45,5)) + 
  geom_point()

plot <- ggplot() +
  # blue plot
  geom_point(data= strength, aes(x=x, y= strength)) + 
  geom_line(data= strength, aes(x=x, y= strength),
              colour="darkblue", size=1) +
  # red plot
  geom_point(data= agility, aes(x=x, y= agility)) + 
  geom_line(data= agility, aes(x=x, y= agility),
              colour="red", size=1) + 
  
  ylab("Score (1 - 10)") +
  xlab("Week") + 
  labs(colour = "Legend") +
  ggtitle( "strength / agility Score") +
  theme(plot.title = element_text(size = 15, face = "bold", hjust = 0.5)) + 
  ylim(5,10)  

plot

假设你的数据是有序的,你可以检查numberline中是否有大于1周的间隙,并使用它的累计和来设置组。

library(ggplot2)

strength <- structure(list(strength = c(6.96645282796775, 6.9434770196974, 6.9294858041908, 6.96177484634987, 7.03444726005702, 6.95287400076132, 6.97520962449872, 7.16991357843855, 7.0516846361186, 7.16047777687495, 7.12286805260925, 7.18192771084337, 7.20209668025626, 7.26842105263158, 7.26456993569132, 7.3665857212239, 7.35361253506142, 7.35968885387948, 7.33265347746278, 7.35438494373302, 7.26772044934884, 7.1710243902439, 7.26794821498627, 7.16986222179401, 7.13271362974577, 7.21015218261914, 7.14576880807273, 7.10625192485371, 6.99561018437226, 7.06859571023877, 7.01988265971317, 7.18301335559265, 6.9627055825805, 7.15087538619979, 7.18207487973227, 7.06894071714785, 7.03441156228493, 6.83571981424149)), row.names = c("strength_fac_1", "strength_fac_2", "strength_fac_3", "strength_fac_4", "strength_fac_5", "strength_fac_6", "strength_fac_7", "strength_fac_8", "strength_fac_9", "strength_fac_11", "strength_fac_12", "strength_fac_13", "strength_fac_14", "strength_fac_15", "strength_fac_16", "strength_fac_17", "strength_fac_18", "strength_fac_19", "strength_fac_20", "strength_fac_21", "strength_fac_22", "strength_fac_23", "strength_fac_24", "strength_fac_25", "strength_fac_26", "strength_fac_27", "strength_fac_28", "strength_fac_29", "strength_fac_30", "strength_fac_31", "strength_fac_32", "strength_fac_33", "strength_fac_34", "strength_fac_35", "strength_fac_36", "strength_fac_37", "strength_fac_38", "strength_fac_39"), class = "data.frame")
# Assuming week is encoded in the row names
strength$week <- as.numeric(vapply(
  strsplit(rownames(strength), "_"), tail, 
  character(1), n = 1))


ggplot(strength, aes(week, strength)) +
  geom_point() +
  geom_line(
    aes(group = cumsum(c(0, diff(week) > 1)))
  )

reprex package (v1.0.0)

创建于 2021-07-22