2012-01-17 41 views
2

如何將兩個時間序列與ggplot2重疊並保留兩個X標籤(一個1970年,另一個1980年)?ggplot2中時間序列的重疊保留x標籤

這是我的數據集和我用來繪製每個圖形的代碼的概述。

> dataset1.data 
     Date Obs 
1 1/1/1970 2.0 
2 1/2/1970 1.0 
3 1/3/1970 0.0 
4 1/4/1970 0.0 
5 1/5/1970 0.5 
6 1/6/1970 5.1 
7 1/7/1970 0.0 
8 1/8/1970 0.0 

> dataset2.data 
     Date Obs 
1 1/1/1980 3.0 
2 1/2/1980 0.5 
3 1/3/1980 0.5 
4 1/4/1980 5.0 
5 1/5/1980 0.4 
6 1/6/1980 6.2 
7 1/7/1980 9.0 
8 1/8/1980 1.3 

qplot(main="Observations 1")+xlab("Date")+ylab("Obs")+ 
geom_point(data = dataset1.data,aes(Date, Obs, colour="blue"),alpha = 0.7,na.rm = TRUE)+ 
scale_colour_identity("Legend", breaks=c("blue"), labels="1970") 

qplot(main="Observations 2")+xlab("Date")+ylab("Obs")+ 
geom_point(data = dataset2.data,aes(Date, Obs, colour="red"),alpha = 0.7,na.rm = TRUE)+ 
scale_colour_identity("Legend", breaks=c("red"), labels="1980") 

回答

2

我把他們都在一個單一的數據集,然後使用新的Year變量的顏色美學:

dataset1.data = read.table('dataset1.txt') 
dataset2.data = read.table('dataset2.txt') 

dataset1.data$Date = as.Date(dataset1.data$Date, format='%m/%d/%Y') 
dataset2.data$Date = as.Date(dataset2.data$Date, format='%m/%d/%Y') 

data = rbind(dataset1.data, dataset2.data) 
data = transform(data, MonthDay=gsub('(.+)-(.+-.+)', '\\2', data$Date), Year=gsub('(.+)-(.+-.+)', '\\1', data$Date)) 

qplot(main="Observations 1")+xlab("Date")+ylab("Obs")+geom_point(data = data,aes(MonthDay, Obs, colour=Year),alpha = 0.7,na.rm = TRUE) 

enter image description here

它可能還可以通過編輯做網格對象。例如,請參閱:https://github.com/hadley/ggplot2/wiki/Editing-raw-grid-objects-from-a-ggplot

+0

一旦我這樣做,我就失去了MonthDay和Year的日期格式。我怎樣才能保持它的日期?我已經嘗試**格式(as.Date(dataset1.data $ Date),format =「%m /%d」)**,但沒有運氣。我的數據集是巨大的,我想限制xlabels僅月。我正在嘗試爲此使用** scale_x_datetime **。 – 2012-01-17 17:48:20

+0

不使用格式化功能,這會將日期更改回字符。仔細閱讀您使用的功能文檔 – 2012-01-17 23:12:46