2015-03-13 18 views
5

dla następujących przykładowy kod:Formatowanie X etykiety osi w R dla określonego warunku

y <- c(23, 34, 11, 9.6, 26, 31, 38, 38, 30, 36, 31) 
days <- seq(as.Date("2015-2-25"), by="day", length=11) 
n <- length(y) 
x <- 1:n 
plot(x, y, type='n', xlab="Days", ylab="Y", xaxt='n') 
axis(1, at=seq(1,11) ,labels=format(days, "%d"), las=1) 
lines(y) 

Mam następujący wykres:

enter image description here

Co chcę jest, gdy zmienia się miesiąc, Chcę móc dodać nazwę miesiąca poniżej dnia na osi X. Tak więc w tym przykładzie, kiedy staje się 01, to powinien pokazać 01 Mar (marzec w oddzielnym wierszu)

Odpowiedz

2

To może się zdarzyć, jeśli coś takiego:

swoje dane plus miesięczny Vector:

y <- c(23, 34, 11, 9.6, 26, 31, 38, 38, 30, 36, 31) 
days <- seq(as.Date("2015-2-25"), by="day", length=11) 

#my addition 
#contains the name of the month for where day == '01' else is blank 
months <- ifelse(format(days, '%d')=='01', months(days) , '') 

n <- length(y) 
x <- 1:n 

Rozwiązanie:

plot(x, y, type='n', xlab="Days", ylab="Y", xaxt='n') 
axis(1, at=seq(1,11) ,labels=format(days, "%d"), las=1) 
lines(y) 

Maksymalnie tutaj jest tylko kod. Teraz trzeba dodać nową oś, ustawić kolor biały oś i wykreślić miesiąc wektor utworzony powyżej:

par(new=T)   #new plot 
par(mar=c(4,4,4,2)) #set the margins. Original are 5,4,4,2. 
#I only changed the bottom margin i.e. the first number from 5 to 4 

#plot the new axis as blank (colour = 'white') 
axis(1, at=seq(1,11) ,labels=months, las=1, col='white') 

wynik wygląda jak co prosiłeś:

enter image description here

Powiązane problemy