Một giải pháp khác, bên cạnh các điều kiện đã được đề cập (sử dụng layout
hoặcpar(xpd=TRUE)
) là phủ lớp âm mưu của bạn với một âm mưu trong suốt trên toàn bộ thiết bị và sau đó thêm chú giải vào đó.
Mẹo nhỏ là phủ một biểu đồ (trống) trên vùng vẽ hoàn chỉnh và thêm chú thích vào đó. Chúng ta có thể sử dụng par(fig=...)
tùy chọn. Đầu tiên chúng tôi hướng dẫn R tạo một âm mưu mới trên toàn bộ thiết bị vẽ:
par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), mar=c(0, 0, 0, 0), new=TRUE)
Cài đặt oma
và mar
là cần thiết vì chúng tôi muốn có phần bên trong của ô bao trùm toàn bộ thiết bị. new=TRUE
là cần thiết để ngăn R khởi động một thiết bị mới. Sau đó chúng ta có thể thêm vào ô trống:
plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
Và chúng tôi đã sẵn sàng để thêm huyền thoại:
legend("bottomright", ...)
sẽ thêm một chú thích ở phía dưới bên phải của thiết bị. Tương tự như vậy, chúng ta có thể thêm chú thích vào lề trên hoặc bên phải. Điều duy nhất chúng tôi cần đảm bảo là lề của cốt truyện gốc đủ lớn để chứa đựng huyền thoại.
Đưa tất cả điều này vào một chức năng;
add_legend <- function(...) {
opar <- par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0),
mar=c(0, 0, 0, 0), new=TRUE)
on.exit(par(opar))
plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
legend(...)
}
Và một ví dụ. Đầu tiên tạo cốt truyện để đảm bảo chúng ta có đủ không gian ở phía dưới để thêm chú thích:
par(mar = c(5, 4, 1.4, 0.2))
plot(rnorm(50), rnorm(50), col=c("steelblue", "indianred"), pch=20)
Sau đó thêm huyền thoại
add_legend("topright", legend=c("Foo", "Bar"), pch=20,
col=c("steelblue", "indianred"),
horiz=TRUE, bty='n', cex=0.8)
Kết quả là: