2011-03-24 5 views
14

나는 아래 코드로 만든 플롯에서 애칭을 숨기려고합니다. 날짜별로 포인트 컬러를 스케일하려면, 날짜를 숫자로 변환해야했고, 플롯에 날짜 범례를 표시하지 않았 으면합니다. 반면에, 모양 범례는 중요한 정보입니다. 나는 legend.position="none"이 전설을 완전히 제거 할 것이라는 것을 이해하지만, 그러면 모양 뒤에 의미를 전달하는 방법에 대한 문제가 생깁니다.ggplot2 범례에서 미학을 제거하는 방법

library(ggplot2) 
w<-read.table("data.txt", header=TRUE) 
pt.data <- w[w$dt==min(w$dt),] 
p <- ggplot(data=w, aes(OAD,RtgValInt,color=dt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75) + 
    scale_colour_gradient(limits=c(min(w$dt), 
      max(w$dt)), 
     low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, 
     color="red", size=3, aes(shape=Port)) 
print(p) 

data.txt 파일에는 아래의 행이 있습니다.

Date   Port OAD   RtgValInt dt 
12/31/2010 Grp1 1.463771 1.833333 14974 
12/31/2010 Grp2 1.193307 2.071429 14974 
11/30/2010 Grp1 1.454115 1.833333 14943 
11/30/2010 Grp2 1.127755 2.071429 14943 
10/29/2010 Grp1 1.434965 2.000000 14911 
10/29/2010 Grp2 1.055758 2.071429 14911 
09/30/2010 Grp1 1.441773 2.000000 14882 
09/30/2010 Grp2 1.077799 2.071429 14882 

enter image description here

답변

10

당신은 레이어 수준에서 전설을 억제 할 수 있습니다. 컬러 미학을 초기 호출에서 ggplot으로 지터 레이어로 옮기면 그 효과가 나타납니다. 나는 왜 당신이 날짜를 기준으로 색상을 지정하고 색상이 무엇을 의미하는지에 대한 열쇠를 제공하지 않으려 고하지만 다소 혼란 스럽습니다. 그러나 그것은 당신이 숙고해야 할 더 철학적 인 질문입니다.

ggplot(data=w, aes(OAD,RtgValInt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75, color=dt, legend = FALSE) + 
    scale_colour_gradient(limits=c(min(w$dt), max(w$dt)),low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, color="red", size=3, aes(shape=Port)) 
+1

데이터 범례가 제거 되더라도 포인트에서 색상 배율이 제거됩니다. 날짜는 고정 된 과거 기간 (예 : 1 개월)을 나타내며 실제 값은 가져 오기 및 시간 경과에 따른 추세가 아닙니다. – user338714

+14

아마 당신이 실제로 스케일 레벨에서 전설을 억제하고 싶다고 생각합니다 :'+ scale_colour_gradient (..., legend = F)' – hadley

+0

완벽하게 작동했습니다! 여러분의 도움에 감사드립니다. – user338714