Solusi lain, selain ondes yang telah disebutkan (menggunakan layout
ataupar(xpd=TRUE)
) adalah untuk overlay plot Anda dengan plot transparan di seluruh perangkat dan kemudian tambahkan legenda itu.
Caranya adalah dengan overlay grafik (kosong) di atas area plot yang lengkap dan menambahkan legenda itu. Kita bisa menggunakan par(fig=...)
opsi. Pertama kami menginstruksikan R untuk membuat plot baru di seluruh perangkat plot:
par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), mar=c(0, 0, 0, 0), new=TRUE)
Pengaturan oma
dan mar
diperlukan karena kami ingin memiliki bagian dalam plot mencakup seluruh perangkat. new=TRUE
diperlukan untuk mencegah R memulai perangkat baru. Kami kemudian dapat menambahkan plot kosong:
plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
Dan kami siap menambahkan legenda:
legend("bottomright", ...)
akan menambahkan legenda ke kanan bawah perangkat. Demikian juga, kita dapat menambahkan legenda ke margin atas atau kanan. Satu-satunya hal yang perlu kita pastikan adalah bahwa margin plot asli cukup besar untuk mengakomodasi legenda tersebut.
Menempatkan semua ini dalam suatu fungsi;
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(...)
}
Dan sebuah contoh. Pertama buat plot, pastikan kita memiliki cukup ruang di bagian bawah untuk menambahkan legenda:
par(mar = c(5, 4, 1.4, 0.2))
plot(rnorm(50), rnorm(50), col=c("steelblue", "indianred"), pch=20)
Lalu tambahkan legenda
add_legend("topright", legend=c("Foo", "Bar"), pch=20,
col=c("steelblue", "indianred"),
horiz=TRUE, bty='n', cex=0.8)
Yang menghasilkan: