Başka bir çözüm, daha önce bahsedilen ( layout
veyapar(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 oma
ve mar
arsanın iç kısmının tüm cihazı kaplamasını istediğimiz için gereklidir. new=TRUE
R'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: