2013-05-01 2 views
6

Я создал график с использованием ggplot и некоторые данные, которые представляют собой появление конкретных действий управления за последнее десятилетие. График выглядит великолепно, за исключением некоторых вертикальных белых пространств, которые появляются в построенных линиях. Есть ли способ удалить эти строки? Я предполагаю, что они вызваны группировкой моих данных (group = 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_linerange вместо geom_line для создания смежных цветовых блоков. –

ответ

5

Интересный участок! Я думаю, если я понимаю вашу проблему вам необходимо либо

  • добавить expand = c(0,0) к scale_x_date, чтобы избавиться от пространства на границах
  • и/или использовать geom_linerange сделать непрерывные цветовые блоки

Но вам нужно указать как ymin, так и ymax значение geom_linerange. filler_value кажется естественным выбором для ymin так позволяет сделать a7.data$filler_value2 <- 1 быть нашим ymax и использовать geom_linerange и включают expand аргумент:

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

Пригвожден! Спасибо за вашу помощь. Я все еще изучаю все возможности ggplot2 и не смотрю на geom_linerange. Урок выучен! –

+0

Я не знал о 'geom_linerange', хорошо! –

Смежные вопросы