2017-01-13 15 views
0

나는 2 주간의 데이터 (일주일 내내)를 나타내는 2 줄의 플롯을 가지고 있고, 추가 간격으로 2 줄의 평균을 나타내는 stat_summary 줄이있다. 주). 범례를 나타내는 라인에 대해 다양한 방법을 사용하여 평균을 나타내는 라인을 추가하려고하면 "수동 스케일의 값이 불충분합니다 .2 필요하지만 단 하나만 제공됨"에서 어떤 해결책을 찾고 있는지에 따라 오류 메시지가 나타납니다. 그룹 미학을 조정할 필요가있다. 전설에 평균을 추가하지 않고 코드를 작성했습니다. 재현 가능한 예제를 얻기 위해 2 주간의 데이터 만 표시하도록 단순화했습니다. 실제 코드에는 5 주간의 데이터가 있습니다. 지금은 scale_color_manual을 어디에 두지 않는 것 같습니다.기존 범례에 stat_summary 행 추가하기

library(ggplot2) 
    cbPalette <- c("#E69F00", "#56B4E9", "#009E73", "#0072B2", 
        "#D55E00", "#999999") 
    col1 <- rep(c("Monday", "Tuesday", "Wednesday", 
       "Thursday", "Friday", "Saturday", 
       "Sunday"), 2) 
    col2 <- c(rep(1, 7), rep(2, 7)) 
    col3 <- c(9446,7681,11576,6788,11782,8414,7011,5321,5418,5533,6123,6924,12420,6313) 
    activitySleep <- data.frame(cbind(col1, col2, col3), 
           stringsAsFactors = FALSE) 
    colnames(activitySleep) <- c("DayOfWeek", "Week", "Steps") 
    activitySleep$DayOfWeek <- factor(activitySleep$DayOfWeek, 
             levels = c("Monday", "Tuesday", "Wednesday", 
             "Thursday", "Friday", "Saturday", 
             "Sunday")) 
    activitySleep$Steps <- as.integer(activitySleep$Steps) 
    p1 <- ggplot(activitySleep, mapping = aes(x = DayOfWeek, y = Steps, 
               color = Week)) + 
     geom_line(aes(group = Week), lwd = 1.25) + 
     ggtitle("Step Tracker") + 
     theme(plot.title = element_text(hjust = 0.5)) + 
     xlab("Day of the Week") + 
     ylab("Number of Steps") + 
     scale_color_manual(values = cbPalette) 
    p1a <- p1 + stat_summary(fun.y = mean, geom = "line", color = "#999999", 
          aes(group = 1), lwd = 1.25) 
    p1a 

나는 SO에 대한 다양한 답변을 검토 한 결과,하지만 내가 찾은 것도 지금까지 전설 "의미"를 추가 용액에 나를 가까이하지 않습니다. 나는 this, thatother과 같은 답변을 시도했습니다. ggplot 2.2.0을 사용하고 있습니다. 감사!

답변

1

당신은 할 수 :

library(tidyverse) 
df=bind_rows(activitySleep,activitySleep%>%group_by(DayOfWeek)%>%summarise(Steps=mean(Steps))) 
df=replace_na(df,list(Week="mean")) 
ggplot(df, mapping = aes(x = DayOfWeek, y = Steps,color = Week)) + 
    geom_line(aes(group = Week), lwd = 1.25) + 
    ggtitle("Step Tracker") + 
    theme(plot.title = element_text(hjust = 0.5)) + 
    xlab("Day of the Week") + 
    ylab("Number of Steps") + 
    scale_color_manual(values = cbPalette) 

아이디어는 플롯을 그리는 데 사용되는 주요 dataframe로 요약 기능을 통합하는 것이다. 그것을 aes()에서 color=Week까지 포함 시키면 범례에 표시됩니다. enter image description here
스프레드/수집 기능을 사용하면 더 쉽고 스마트 한 방법이 될 수 있습니다.

+0

당신의 솔루션은 위에 제공된 데이터의 제한된 부분 집합에서 작동합니다. 실제 데이터 프레임에 더 많은 열이 있습니다. 내 전체 데이터 프레임에서 작동하지 않습니다. 내 데이터 프레임을이 열로 좁히고 거기에서부터 시작하겠습니다. 감사! –