2013-05-01 2 views
6

저는 ggplot과 지난 10 년 동안 특정 관리 작업의 발생을 나타내는 일부 데이터를 사용하여 그래프를 작성했습니다. 그래프는 플롯 된 선 내에 나타나는 몇 개의 수직 공백을 제외하고는 커 보인다. 이 줄을 제거 할 수있는 방법이 있습니까? 나는 그들이 내 데이터 (그룹 = 1)의 그룹화에 의한 것 같아요. 어떤 도움을 주시면 감사하겠습니다. 내 코드는 아래와 같습니다.ggplot 라인 그래프에서 수직 화이트 라인 제거

또한 저는 this stackoverflow 질문을 지침으로 사용했습니다.

library(scales) 

# Build data frame. 
a7.data <- data.frame(date = seq(as.Date("2002/01/01"), as.Date("2013/05/01"),  by="day")) 
a7.data$year <- as.numeric(format(as.Date(a7.data$date), format="%Y")) 
a7.data$month <- as.numeric(format(as.Date(a7.data$date), format="%m")) 
a7.data$day <- as.numeric(format(as.Date(a7.data$date), format="%d")) 
a7.data$status <- "Yes" 
a7.data$filler_value <- 0 

# Edit data frame for dates in which the management action was "no". 
a7.data$status[a7.data$date >= "2002/01/01" & a7.data$date < "2002/07/01"] <- "No" 
a7.data$status[a7.data$date >= "2005/05/20" & a7.data$date < "2005/08/25"] <- "No" 
a7.data$status[a7.data$date >= "2005/12/31" & a7.data$date < "2006/04/12"] <- "No" 
a7.data$status[a7.data$date >= "2006/11/06" & a7.data$date < "2006/12/31"] <- "No" 
a7.data$status[a7.data$date >= "2007/01/31" & a7.data$date < "2007/07/02"] <- "No" 
a7.data$status[a7.data$date >= "2008/02/01" & a7.data$date < "2009/08/11"] <- "No" 
a7.data$status[a7.data$date >= "2010/02/28" & a7.data$date < "2010/03/15"] <- "No" 
a7.data$status[a7.data$date >= "2010/05/09" & a7.data$date < "2010/07/07"] <- "No" 

# Create a new column that creates a dummy year with which to plot the data in ggplot using faceting. 
a7.data <- transform(a7.data, doy = as.Date(paste(1970, month, day, sep="/"))) 

# Custom colors. 
ccolors <- c("#086CA2", "#FF8B00") 

# ggplot code. 
bb <- ggplot(a7.data, aes(doy, filler_value)) + 
geom_line(aes(color=status, group=1), size=15, alpha=0.9) + 
scale_x_date(label=date_format("%b"), breaks = "month") + 
xlab("") + ylab("") + facet_grid(year~., scales="free") + 
theme_bw() + theme(axis.text.y=element_blank()) + 
theme(axis.ticks.y=element_blank()) + 
scale_color_manual(values=ccolors, name="Article VII Restrictions?") 

# Display plot. 
bb 
+0

안녕하세요, Jan의 왼쪽과 오른쪽 공백을 말하고 있습니까? –

+0

더 명확해야합니다. 나는 컬러 블럭들 내에있는 매우 얇은 흰색을 언급하고 있었다. SimonO101은 geom_line 대신 geom_linerange를 사용하여 인접한 색상 블록을 만드는 것이 좋습니다. –

답변

5

흥미로운 플롯! 나는이 문제를 이해한다면 난 당신이 중 하나를 연속 컬러 블록 를 만들기 위해 경계

  • 및/또는 geom_linerange를 사용에서 공간 제거하는 scale_x_dateexpand = c(0,0)을 추가

    • 필요하다고 생각

      그러나 geom_linerange을 사용하려면 yminymax 값을 모두 지정해야합니다. filler_value 그래서 우리 ymaxa7.data$filler_value2 <- 1을하고 geom_linerange를 사용하고 expand 인수를 포함시킬 수 ymin에 대한 자연 선택이 될 것 같다 : 그 변경 한 경우

      a7.data$filler_value2 <- 1 
      bb <- ggplot(a7.data, aes(x = doy)) + 
      geom_linerange(aes(ymin = filler_value , ymax = filler_value2 , color=status, group=1), size=15, alpha=0.9) + 
      scale_x_date(label=date_format("%b"), breaks = "month" , expand = c(0,0)) + 
      xlab("") + ylab("") + facet_grid(year~., scales="free") + 
      theme_bw() + theme(axis.text.y=element_blank()) + 
      theme(axis.ticks.y=element_blank()) + 
      scale_color_manual(values=ccolors, name="Article VII Restrictions?") 
      
      # Display plot. 
      bb 
      

      내가 다음과 같습니다 플롯을 얻기를 ... enter image description here

  • +0

    Nailed it! 당신의 도움을 주셔서 감사합니다. 나는 여전히 ggplot2의 모든 기능을 배우고 있으며 실제로 geom_linerange를 살펴 보지 않았습니다. 수업은 배웠다! –

    +0

    'geom_linerange'에 대해 잘 몰랐습니다. –