Khi tôi chạy mã của bạn, tôi làm không có được hình ảnh bạn hiển thị. Vấn đề là dòng này:
text(axTicks(1), par("usr")[3] - 2, srt=45, adj=1, labels=lab, xpd=T, cex=0.8)
như axTicks(1)
lợi nhuận:
> axTicks(1)
[1] 5 10 15
Vì vậy, những gì đang xảy ra là 19 nhãn của bạn đang được vẽ vào những địa điểm.
Nếu bạn muốn âm mưu tại các địa điểm của bọ ve (1:19
) thì:
text(1:19, par("usr")[3] - 2, srt=45, adj=1, labels=lab, xpd=T, cex=0.8)
sẽ làm việc.
Dưới đây là ví dụ đầy đủ dựa trên mã của bạn.
Runtime <- c(579,0,581,610,830,828,592,651,596,596,591,581,587,
594,604,606,447,434,445)
g_range <- range(0,Runtime)
lab <- c('2011-07-20','2011-08-03','2011-08-10','2011-08-17','2011-08-24',
'2011-08-25','2011-08-27','2011-08-31','2011-09-07','2011-09-10',
'2011-09-14','2011-09-21','2011-09-28','2011-10-05','2011-10-06',
'2011-10-07','2011-10-13','2011-10-19','2011-10-31')
## plot
op <- par(mar = c(6,4,4,2) + 0.1) ## bigger bottom margin
plot(Runtime, type="o", col="blue", ylim=g_range, axes=FALSE, ann=FALSE)
box()
axis(1, at=1:19, lab=FALSE)
text(1:19, par("usr")[3] - 40, srt=45, adj=1.2, labels=lab, xpd=T, cex=0.7)
axis(2, las=1, at=500*0:g_range[2])
title(main="Runtime", col.main="red", font.main=4)
title(xlab="Build", col.lab=rgb(0,0.5,0), line = 4.5)
title(ylab="MS", col.lab=rgb(0,0.5,0))
legend("topright", c("AveElapsedTime"), cex=0.8, col=c("blue"), pch=21, lty=1)
## reset par
par(op)
Điều này có thể được xử lý tốt hơn sử dụng chức năng trong gói gridBase dù, cho phép lưới và cơ sở đồ họa để cùng tham gia. Lý do tôi nói nó có thể tốt hơn là bạn có thể chỉ định rằng tọa độ y
được đặt theo số lượng dòng thay vì cố gắng tìm ra một giá trị phù hợp cho số liệu y
về dữ liệu được vẽ.
Dưới đây là một ví dụ:
## load gridBase
require(gridBase)
## do the base plot parts
op <- par(mar = c(6,4,4,2) + 0.1) ## bigger bottom margin
plot(1:19, Runtime, type="o", col="blue", ylim=g_range, axes=FALSE, ann=FALSE)
box()
axis(1, at=1:19, lab=FALSE)
axis(2, las=1, at=500*0:g_range[2])
title(main="Runtime", col.main="red", font.main=4)
title(xlab="Build", col.lab=rgb(0,0.5,0), line = 4.5)
title(ylab="MS", col.lab=rgb(0,0.5,0))
legend("topright", c("AveElapsedTime"), cex=0.8, col=c("blue"), pch=21, lty=1)
## at this point, DO NOT alter the dimensions of the plotting window
## now do the grid business
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
## this adds the text
grid.text(lab, x = unit(1:19, "native"), y = unit(-1, "lines"),
just = "right", rot = 60, gp = gpar(cex = 0.7))
## this finishes off the viewport - you have to do this or things will go wrong:
popViewport(3)
## reset par
par(op)
Chú giải này có thể là một chút khó tính trên màn hình, chạy lại ví dụ gridBase vào R của tôi 2.13.2 cài đặt không tạo ra bất kỳ nhãn. Đóng thiết bị và sau đó chạy mã afresh hoạt động mặc dù. Tôi không nghĩ rằng đây sẽ là một vấn đề nếu bạn đang vẽ một thiết bị pdf()
.
Bạn chỉ có thể có chiều dọc hoặc ngang bằng cách sử dụng 'las'. Nếu bạn muốn các nhãn có góc cạnh, bạn phải tự viết chúng bằng cách sử dụng 'văn bản': http://128.97.141.26/stat/R/faq/angled_labels.htm – James
@James err, OP * là *. Xem lệnh 'text()' với 'srt'. –
Rất tiếc! Chỉ cần quét mã và chỉ thấy các cuộc gọi trục. – James