2015-07-09 3 views
3

Я рисую данные из двух разных лет (07 и 08) друг над другом. Эти два года имеют несколько разные даты, но когда я рисую это в R, я не могу получить все даты, R перестраивает их в порядке убывания или разбивает их в два разных года один за другим с пробелом между ними.Проблемы с построением графика с разными датами в ggplot

Мне нужны они друг на друге, некоторые из них слегка перекошены.

Даты должны быть:

data_07 [1] < -c ("7/6", "21/6", "31/6", "14/7", "28/7 «11/8», «25/8», «8/9»)

данные_08 [, 1] < -c ("7/6", "21/6", "5/7" "19/7", "2/8", "16/8", "25/8", "8/9")

Мой сценарий

data7 <- data.frame(
     Date = c("7/6","21/6","31/6","14/7","28/7","11/8","25/8","8/9"), 
     variable = sample(c("Age 39-40", "Age 62-63"), 8, replace = TRUE), 
     value = sample(1:8) 
    ) 


data8 <- data.frame(
     Date = c("7/6","21/6","5/7","19/7","2/8","16/8","25/8","8/9"), 
     variable = sample(c("Age 39-40", "Age 62-63"), 8, replace = TRUE), 
     value = sample(1:8) 
    ) 


p1<-ggplot(data7, 
    aes(x=Date, y=value, group=variable)) + 
    geom_point(size=2, shape = 15) + 
    geom_line(linetype=1) + 

    geom_line(data=data8, aes(x=Date, y=value, group=variable),linetype=2) + 
    geom_point(data=data8, size=2, shape = 1) 


p1 + facet_wrap(~ variable, nrow = 5, ncol = 1, scales= "fixed") + 
    labs(x="Dates", y="Catches per 20 traps", title="") + 
    theme(panel.grid.minor.y = element_blank(), 
    panel.grid.major.y = element_blank()) 

Любая помощь и предложения приветствуются , Спасибо!

Daniel

+0

Вы можете поделиться минимальный воспроизводимый пример, как в http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-воспроизводимый-пример/5963610 # 5963610 с нами? Это поможет вам намного легче. – mts

+1

извините за это! Я обновил сценарий –

ответ

1

Если год не важен для сюжета, я бы рекомендовал назначить новый столбец данных с указанием года, конвертировать все ваши даты в общий год, а затем построить их в группах.

library(dplyr) 
library(ggplot2) 
library(lubridate) 

#* dates are initially stored in dd/mm format. 
#* create a variable where year = 2007 
#* turn all dates to dd/mm/2000 
data_07 <- data.frame(date = c("7/6","21/6","31/6","14/7","28/7","11/8","25/8","8/9"), 
         y = rnorm(8), 
         stringsAsFactors=FALSE) %>% 
    mutate(year = 2007, 
     date = dmy(paste0(date,"/2000"))) 


data_08 <- data.frame(date = c("7/6","21/6","5/7","19/7","2/8","16/8","25/8","8/9"), 
         y = rnorm(8), 
         stringsAsFactors=FALSE) %>% 
    mutate(year = 2008, 
     date = dmy(paste0(date,"/2000"))) 

both_years <- bind_rows(data_07, data_08) 

ggplot(data = both_years, 
     mapping = aes(x = date, 
        y = y, 
        colour = factor(year))) + 
    geom_point() + 
    geom_line() 
0

Эти две линии решить мою проблему:

data$Date<-as.Date(data$Date, format="%d/%m/%Y") 

scale_x_date(labels = date_format("%d/%m"))