Başka bir çözüm, daha önce bahsedilen ( layoutveyapar(xpd=TRUE) ) işaretlerin tüm cihazın üzerine arsa üzerinde şeffaf bir arsa yerleştirmek ve daha sonra efsaneyi buna eklemektir.
İşin püf noktası, (boş) bir grafiği tüm çizim alanı üzerine yerleştirmek ve göstergeyi buna eklemek. par(fig=...)Seçeneği kullanabiliriz . İlk olarak R'ye tüm çizim cihazı üzerinde yeni bir çizim oluşturmasını söyleriz:
par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), mar=c(0, 0, 0, 0), new=TRUE)
Ayarın omave mararsanın iç kısmının tüm cihazı kaplamasını istediğimiz için gereklidir. new=TRUER'nin yeni bir cihaz başlatmasını önlemek için gereklidir. Daha sonra boş grafiği ekleyebiliriz:
plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
Ve efsaneyi eklemeye hazırız:
legend("bottomright", ...)
cihazın sağ alt kısmına bir açıklama ekleyecektir. Benzer şekilde, efsaneyi üst veya sağ kenar boşluğuna ekleyebiliriz. Sağlamamız gereken tek şey, orijinal arsanın marjının efsaneyi karşılayacak kadar büyük olmasıdır.
Tüm bunları bir işleve koymak;
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(...)
}
Ve bir örnek. Öncelikle, efsaneyi eklemek için altta yeterli alanımız olduğundan emin olun.
par(mar = c(5, 4, 1.4, 0.2))
plot(rnorm(50), rnorm(50), col=c("steelblue", "indianred"), pch=20)
Sonra efsaneyi ekleyin
add_legend("topright", legend=c("Foo", "Bar"), pch=20,
col=c("steelblue", "indianred"),
horiz=TRUE, bty='n', cex=0.8)
Sonuçlanan:
