이미 언급 한 ( layout
또는 사용 par(xpd=TRUE)
) 외에 다른 해결책 은 전체 장치에 대해 플롯을 투명 플롯으로 오버레이 한 다음 범례를 추가하는 것입니다.
트릭은 전체 플로팅 영역에 (빈) 그래프를 오버레이하고 범례를 추가하는 것입니다. par(fig=...)
옵션을 사용할 수 있습니다 . 먼저 전체 플로팅 장치에 대해 새로운 플롯을 만들도록 R에 지시합니다.
par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), mar=c(0, 0, 0, 0), new=TRUE)
플롯의 내부가 전체 장치를 커버하도록 설정 oma
하고 mar
필요합니다. new=TRUE
R이 새로운 장치를 시작하지 못하도록해야합니다. 그런 다음 빈 줄거리를 추가 할 수 있습니다.
plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
그리고 범례를 추가 할 준비가되었습니다 :
legend("bottomright", ...)
기기의 오른쪽 하단에 범례를 추가합니다. 마찬가지로 범례를 상단 또는 오른쪽 여백에 추가 할 수 있습니다. 우리가 보장해야 할 유일한 것은 원래 줄거리의 마진이 범례를 수용하기에 충분히 크다는 것입니다.
이 모든 것을 함수에 넣는 것;
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(...)
}
그리고 예입니다. 먼저 하단에 범례를 추가하기에 충분한 공간이 있는지 확인하는 플롯을 만듭니다.
par(mar = c(5, 4, 1.4, 0.2))
plot(rnorm(50), rnorm(50), col=c("steelblue", "indianred"), pch=20)
그런 다음 범례를 추가하십시오
add_legend("topright", legend=c("Foo", "Bar"), pch=20,
col=c("steelblue", "indianred"),
horiz=TRUE, bty='n', cex=0.8)
를 야기하는: