2013-03-16 3 views
1

Моя серия содержит 755 значений. Я пытаюсь построить даты на оси х, используя ось и последовательность для определения тиков. Но проблема в том, что метки не равны по длине как H2S.time, поэтому ось не отображается. Как я могу нарисовать даты на оси модно? Серия H2S.time включает 755 дат от 2/10/2011 до 3/5/2013, хранящихся в виде строк.Невозможно установить даты по оси x

#Import H2S Series 
H2S.time<-read.table("H2S-time.txt")[1:755,1] 
H2S.ts<-read.table("H2S.txt")[1:755,1] 
H2S.time <- as.Date(H2S.time, format="%m/%d/%Y") 
plot(H2S.ts,col="blue",xlab="Day",) 
axis(side=1, at=seq(1,755,by=20), labels=strftime(H2S.time, format="%d-%m-%Y"),cex.axis=0.8) 

ответ

1

Возьмите подмножество ярлыков:

plot(H2S.ts,col="blue",xlab="Day",xaxt='n') #no x-axis 
axis(side=1, at=seq(1,755,by=20), labels=strftime(H2S.time, 
    format="%d-%m-%Y")[seq(1,755,by=20)],cex.axis=0.8) 
+0

Хмм ... эта ось кажется только добавить на другой. Есть ли способ, которым я могу пропустить построение другой оси x1? – l3win

+0

@ l3win Проверьте мой обновленный ответ. –

1

axis() функция не является универсальным, но существуют специальные альтернативные функции для построения графиков данных, относящихся к времени. Функции axis.Date() и axis.POSIXct() принимают объект, содержащий даты, и создают ось с соответствующими ярлыками. Вот два примера, адаптированные с помощью соответствующих функций:

enter image description here

## example with axis.Date 
layout(matrix(c(1,2),nrow=2,byrow=TRUE)) 
random.dates <- as.Date("2001/1/1") + 70*sort(stats::runif(100)) 
plot(random.dates, 1:100, xaxt="n",main='pretty axes dates') 
axis.Date(1, at=seq(as.Date("2001/1/1"), max(random.dates)+6, "weeks")) 
### example with axis.POSIXct 
with(beaver1, { 
    time <- strptime(paste(1990, day, time %/% 100, time %% 100), 
        "%Y %j %H %M") 
    # now label every hour on the time axis 
    plot(time, temp, type="l", xaxt="n",main='pretty axes times') 
    r <- as.POSIXct(round(range(time), "hours")) 
    axis.POSIXct(1, at=seq(r[1], r[2], by="hour"), format="%H:%M") 
})