2013-05-01 21 views
6

Ho creato un grafico utilizzando ggplot e alcuni dati che rappresentano il verificarsi di azioni di gestione specifiche negli ultimi dieci anni. Il grafico sembra fantastico tranne alcuni spazi bianchi verticali che appaiono all'interno delle linee tracciate. C'è un modo per rimuovere queste linee? Immagino che siano causati dal raggruppamento dei miei dati (gruppo = 1). Qualsiasi aiuto sarebbe apprezzato. Il mio codice è sottoRimozione di linee bianche verticali in ggplot Grafico lineare

Inoltre, ho utilizzato la domanda stackoverflow this come guida.

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

ciao, ti riferisci allo spazio bianco a sinistra ea destra di 'Jan' –

+0

Avrei dovuto essere più chiaro. Mi riferivo al bianco molto sottile distanziato all'interno dei blocchi di colore. SimonO101 ha risolto il problema suggerendo di utilizzare geom_linerange anziché geom_line per creare blocchi di colori contigui. –

risposta

5

Trama interessante! Penso che se ho capito il tuo problema si sia bisogno

  • per aggiungere un expand = c(0,0)-scale_x_date per sbarazzarsi dello spazio ai confini
  • e/o utilizzare geom_linerange per fare blocchi di colore contigui

Ma è necessario specificare sia un valore ymin sia un valore ymax per utilizzare geom_linerange. filler_value sembra essere una scelta naturale per ymin così lascia fare a7.data$filler_value2 <- 1 essere il nostro ymax e utilizzare una geom_linerange e includono una expand argomento:

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 

Se faccio quei cambiamenti ottengo una trama che assomiglia a questo ... enter image description here

+0

Inchiodato! Grazie per l'aiuto. Sto ancora imparando tutte le funzionalità di ggplot2 e non ho davvero guardato in geom_linerange. Lezione appresa! –

+0

Non sapevo di 'geom_linerange', bello! –

Problemi correlati