2010-06-01 6 views
44

플롯 아래에 범례가있는 ggplot2 플롯을 만들려고합니다.ggplot2에서 범례를 이동하거나 배치하는 방법

ggplot2 책은 112 페이지에서 "전설의 위치 및 정당화는 테마 설정 legend.position에 의해 제어되며 값은 오른쪽, 왼쪽, 위, 아래, 없음 (전설 없음) 또는 숫자 일 수 있습니다 위치".

다음 코드는 작동하지만 ("right"기본값이기 때문에) 작동하며 "none"을 범례 위치로 사용할 수도 있지만 "left", "top", "bottom"모두 "Error 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") 

내가 뭘 잘못입니까? 전설의 위치를 ​​다시 잡는 것은 믿을 수 없을 정도로 보편적이어야합니다. 그래서 저는 그것이 저라고 생각합니다.

불행하게도 그것이 내가 정말 정말 이번 여름에 해결할 수 있도록 노력하겠습니다 ggplot2에서이 문제입니다> 0.9.3 (opts가 사용되지 않습니다)

theme(legend.position = "bottom") 

이전 버전 버전의

답변

39

.

업데이트 :

opts(legend.position = "left") 관련된 버그가 ggplot2의 최신 버전을 사용하여 수정되었습니다. 또한 버전 0.9.0에서는 guide_legendguide_colorbar이 소개되었으므로 범례 내에서 항목의 모양과 위치를 훨씬 정밀하게 제어 할 수 있습니다. 예를 들어,이 기능은 범례 항목의 행 및 열 수를 지정합니다.

+0

이는 (legend.position = "바닥") theme_update'와 현재 수행되지 않습니다 '? –

3

언제든지 수동으로 범례를 배치 할 수 있습니다. 그러나 레이블이 여전히 스택/세로 형이므로 추악합니다. 정말 해들리이 :-)에게 ggplot2의 최신 버전에서

p <- qplot(VarX,VarY, data=myDat, shape=Descrip) + 
opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines")) 
+9

'opts()'는 이제 비추천입니다 - 대신에'guide_legend()'를 사용하십시오 http://docs.ggplot2.org/0.9.2.1/guide_legend.html 테마가있는 – Andrew

0

를 해결하기 위해 시간을 찾아 희망, 당신은 + theme(legend.position='bottom')를 사용할 수 있습니다.

enter image description here

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) 

+0

(범례.position = "bottom") 내 전설은 왼쪽 아래에 표시되는 반면 예제에서는 중간에 표시됩니다 (지난 수년 동안 이전의 내 계획에 있다고 생각함). 변경된 사항과 중간에 다시 가져 오는 방법에 대해 알고 있습니까? – Tingolfin

관련 문제