2015-03-13 12 views
5

Đối với mã mẫu sau:Formatting X trục nhãn R cho một điều kiện cụ thể

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) 

Tôi có biểu đồ sau:

enter image description here

Những gì tôi muốn là khi những thay đổi trong tháng, Tôi muốn có thể thêm tên tháng dưới ngày trên trục x. Vì vậy, trong ví dụ này, khi nó trở thành 01, nó sẽ hiển thị 01 Mar (tháng trên một dòng riêng biệt)

Trả lời

2

Nó có thể xảy ra nếu bạn làm điều gì đó như thế này:

Dữ liệu của bạn cộng với vector tháng:

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 

giải pháp:

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) 

lên đến đây chỉ là mã của bạn. Bây giờ bạn cần phải thêm một trục mới, thiết lập màu sắc trục sang màu trắng và vẽ vector tháng tạo ở trên:

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') 

Kết quả trông giống như những gì bạn yêu cầu:

enter image description here

Các vấn đề liên quan