2014-02-12 2 views
1

나는 이와 비슷한 질문을 며칠 전에 받았지만 약간의 변화가 있었고 문제가 생겼습니다. I는 다음과 같습니다 데이터 집합이 있습니다ggplot2 : 색상이 아닌 변수를 기준으로 닷지를 지정하십시오.

http://pastebin.com/a1PzfeG1

을 그리고 난 다음 코드를 사용하고 있습니다 :

Graph

:이처럼 보이는 그래프를 만들려면

ggplot(aes(x=factor(ATM),y=value), data=CONDITION) + 
    geom_boxplot(aes(fill=factor(TEMP))) + 
    geom_point(aes(color=factor(PARENT)), position=position_dodge(width=0.75)) + 
facet_wrap(~ variable, ncol = 1) + 
scale_fill_manual(values = c("#88CCFF","#FF6666")) + 
scale_colour_manual(values = c("#336699","#990000","#009900")) + 
labs(title = "(Fig. 1) Effect of temperature and hydrostatic pressure on the development of larval Crepidula fornicata") + 
xlab("Pressure \n (atm)") + 
ylab("Number of Larvae") + 
guides(fill=guide_legend(title="Temperature (°C)"),colour=guide_legend(title="Parent")) 

이제 geom_point의 색상을 인자 (TEMP)로 설정하면 위치 닷지가 해당 상자 플롯과 정렬됩니다. 하지만 부모를 기반으로 변경 한 경우 변수 대신에 변수를 기반으로 오프셋을 적용합니다. 내가 궁금해하는 점은 TEMP 변수를 기반으로 포인트를 정렬하는 방법이 있지만 부모를 기준으로 색상을 지정하는 방법이 있는지입니다. 사전에

감사합니다,

KEZ

답변

4

PARENT이 세 가지를 가지고 반면 TEMP이 두 가지 수준이 있기 때문에이 일어나고있다. ggplot은 보유하고있는 레벨의 수를 기준으로 회피합니다. 2 개의 박스 플롯을 가지고 있기 때문에 포인트가 2 레벨 일 때 닷지가 올바르게 정렬됩니다. 3 박스 플롯이 있다면 PARENT 회피 포인트가 잘 맞을 것입니다.

geom_point(aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75)) 

이 그룹이 달리 정의되지 않은 경우 그룹을 할당합니다 기본적 color으로하기 때문에 작동 : 여기 group를 사용하여 해결 방법입니다. 여기에서 우리는 적극적으로 그룹을 지정하기 때문에 색을 암시하는 그룹이 아닌 명시적인 그룹을 토대로 도지가 우세하고 교묘히 회피합니다.

+0

매우 간단하고 완벽하게 작동했습니다. 도와 주셔서 대단히 감사합니다! – Kez

관련 문제