ggplot2에서 범례를 이동하거나 배치하는 방법
플롯 아래에 범례가있는 ggplot2 플롯을 만들려고합니다.
ggplot2 책은 p 112에서 "범례의 위치와 정당성은 legend.position 테마 설정에 의해 제어되며 값은 오른쪽, 왼쪽, 위쪽, 아래쪽, 없음 (범례 없음) 또는 숫자 위치가 될 수 있습니다"라고 말합니다.
다음 코드는 작동하며 ( "right"가 기본값이므로) 범례 위치로 "none"으로도 작동하지만 "left", "top", "bottom"은 모두 "Error in grid.Call"로 실패합니다. .graphics ( "L_setviewport", pvp, TRUE) : 무제한 위치 및 / 또는 뷰포트 크기 "
library(ggplot2)
(myDat <- data.frame(cbind(VarX=10:1, VarY=runif(10)),
Descrip=sample(LETTERS[1:3], 10, replace=TRUE)))
qplot(VarX,VarY, data=myDat, shape=Descrip) +
opts(legend.position="right")
내가 도대체 뭘 잘못하고있는 겁니까? 범례의 위치를 변경하는 것은 엄청나게 흔해야하므로 나인 것 같습니다.
0.9.3을 초과하는 버전 ( opts
사용되지 않는시기)
theme(legend.position = "bottom")
이전 버전 :
불행히도 이것은 ggplot2의 버그인데 이번 여름에 정말 고칠 수 있기를 바랍니다.
최신 정보:
관련 버그 opts(legend.position = "left")
는 최신 버전의 ggplot2를 사용하여 수정되었습니다 . 또한 버전 0.9.0 에서는 범례 자체 내에서 항목의 모양과 위치를 훨씬 더 세밀하게 제어 할 수 있는 guide_legend
및 의 도입을 확인 guide_colorbar
했습니다. 예를 들어이 기능은 범례 항목의 행과 열 수를 지정합니다.
내가 여기있는 동안이 답변에 대한 몇 가지 업데이트 만 있습니다. Hadley가 언급했듯이 다음을 사용하여 범례를 맨 아래로 이동할 수 있습니다.theme(legend.position = "bottom")
또는 수동으로 이동 theme(legend.position = c(.2,.85))
범례를 수평으로하려면 다음을 사용하십시오. theme(legend.position = c(.2,.85), legend.direction = "horizontal")
항상 수동으로 범례를 배치 할 수 있지만 레이블이 여전히 스택 / 수직이기 때문에 다소보기 흉합니다. 나는 정말로 hadley가 이것을 고칠 시간을 찾기를 바랍니다 :-)
p <- qplot(VarX,VarY, data=myDat, shape=Descrip) +
opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines"))
새로운 버전에서는 ggplot2
, 당신은 사용할 수 있습니다 + theme(legend.position='bottom')
.
qplot(VarX,VarY, data=myDat, shape=Descrip) +
theme(legend.position='bottom')
더 많은 레전드의 장점을 보려면 Cookbook for R-Legends 를 참조하십시오 .
주석에 대한 응답으로 theme_update()
ggplot 중간에 호출되면 시작되지 않습니다 (에서와 같이 + theme_update()
후속 시간에만 해당됩니다. 또한 특정 플롯이 아닌 활성 테마도 수정합니다. 따라서 다음과 같이 할 수 있습니다.
theme_update(legend.position='bottom')
qplot(VarX,VarY, data=myDat, shape=Descrip)
위와 같은 결과로, 차이점은 후속 플롯도 하단의 범례로 기본 설정된다는 것입니다.
참고 URL : https://stackoverflow.com/questions/2954005/how-to-move-or-position-a-legend-in-ggplot2
'developer tip' 카테고리의 다른 글
Editor.updateCursorPositionMz의 Meizu 장치에 대한 NullPointerException (0) | 2020.12.09 |
---|---|
Win32에서 힙 손상; (0) | 2020.12.09 |
순수 가상 함수에는 인라인 정의가 없을 수 있습니다. (0) | 2020.12.09 |
int에서 해제 / nullable 변환이있는 심각한 버그, 십진수 변환 허용 (0) | 2020.12.09 |
분기없는 K- 평균 (또는 기타 최적화) (0) | 2020.12.09 |