2013-05-01 15 views
6

Ggplot ve son on yıl içinde belirli yönetim eylemlerinin oluşumunu temsil eden bazı verileri kullanarak bir grafik oluşturdum. Grafik, çizilen çizgilerde görünen bazı dikey beyaz alanlar haricinde harika görünüyor. Bu satırları kaldırmak için bir yolu var mı? Verilerimin gruplandırılmasından kaynaklandığını tahmin ediyorum (grup = 1). Herhangi bir yardım takdir edilecektir. Kodum aşağıda.ggplot'ta Dikey Beyaz Çizgileri Kaldırma Satır Grafiği

Ayrıca, kılavuz olarak this stackoverflow sorusunu kullandım.

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

Merhaba, 'Jan' –

+0

'un solundaki ve sağındaki beyaz boşluğa atıfta bulunuyorsunuz. Renk blokları içindeki çok ince beyaza atıfta bulunuyordum. SimonO101, bitişik renk blokları oluşturmak için geom_line yerine geom_linerange kullanmasını önererek sorunumu çözdü. –

cevap

5

İlginç konular! Sorununu anlıyorum eğer senin de bitişik renk blokları yapmak için sınırları

  • ve/veya geom_linerange kullanmak uzayda kurtulmak scale_x_date bir expand = c(0,0) eklemek için

    • gerektiğini düşünüyorum

      geom_linerange'u kullanmak için ymin ve ymax değerlerini belirtmeniz gerekir. filler_value yani bizim ymax olmak a7.data$filler_value2 <- 1 yapmak ve geom_linerange kullanın ve bir expand argüman dahil etmenizi sağlar ymin için doğal bir seçim gibi görünüyor: Ben bu değişiklikleri yaparsanız

      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 
      

      Şöyle bir arsa almak ... enter image description here

  • +0

    Nailed it! Yardım ettiğin için teşekkür ederim. Hala ggplot2'nin tüm yeteneklerini öğreniyorum ve geom_linerange'a bakmadım. Ders öğrenildi! –

    +0

    Ben geom_linerange' hakkında bilmiyordum, güzel! –

    İlgili konular