2017-02-03 2 views
1

ggplot2 패키지를 사용하여면 처리 된 상자 그림을 만들었습니다. R 코드는 다음과 같습니다 :R : ggplot의 테일러링 범례 boxplot은 두 개의 별도 범례를 남깁니다.

version.labs <- c(`1`="Version 1.0", `2`="Version 2.0", `3`="Version 3.0", `4`="Version 4.0", `5`="Version 5.0") 
ggplot(df, aes(x=factor(Subsystem), y=Risk.value, fill=factor(Version))) + 
    geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(Version)), alpha=0.9) + 
    geom_boxplot(alpha = 0.5, show.legend = FALSE) + facet_grid(.~Version, labeller = as_labeller(version.labs)) + 
    theme(strip.text.x = element_text(size=9, color="black", face="bold")) 

결과 플롯은 범례에 대해 꽤 잘 보이는 것 같습니다 (아래 그림 참조). 전설에

enter image description here

나는 제목뿐만 아니라 각 항목에 대한 텍스트 레이블을 변경하고 싶습니다. 제목은 "버전"이고 레이블은 "버전 1.0", ..., "버전 5.0"이어야합니다.

다양한 방법을 시도했지만 모두 새로운 별도의 범례를 추가합니다. 새로운 전설은 좋아 보이지만 오래된 것이 아직 잘 보이지 않아 제거 방법을 찾을 수 없습니다.

내가 시도한 마지막이처럼 scale_color_manual() 함수를 추가했다 :

scale_color_manual(name = "Version", labels=c("v1.0","v2.0","v3.0","v4.0","v5.0"), values=c("grey","blue","green","red","black")) 

이이처럼 보이는 상자 그림을 초래한다.

enter image description here

볼 수 있듯이 두 가지 전설이있다. 이렇게, 가까운 그러나 여송연 없음. 이 문제를 해결하는 방법에 대한 힌트를 얻으실 수 있습니다.

+0

귀하의 예는 재현 할 수 없습니다. 하지만 당신은'scale_color_manual'과'scale_fill_manual' 둘 다 필요하다고 생각합니다. – Axeman

+0

의견을 보내 주셔서 감사합니다. 나는 또한 그것을 시도하고 그것은 문제를 해결하지 못했습니다. 그러나 나는 별도의 해결책으로 설명 된대로 다른 해결책을 사용하여 그것을 해결했다. –

답변

1

문제를 파악했습니다. 그것은 내일반 내에 내 아테네 채우기 기능을 배치했다. 대신 geom_boxplot()에 배치해야합니다. 그렇지 않으면 일반 ggplot()geom_boxplot() 모두 범례를 추가합니다. 그래서 그것을 고쳤으며 guides()을 사용하여 geom_boxplot() 범례의 제목을 업데이트했습니다. 전체 코드는 다음과 같습니다.

ggplot(df, aes(x=factor(Subsystem), y=Risk.value)) + 
    geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(Version)), alpha=0.9) + 
    geom_boxplot(alpha = 0.5, show.legend = FALSE, aes(fill=factor(Version))) + facet_grid(.~Version, labeller = as_labeller(version.labs)) + 
    theme(strip.text.x = element_text(size=9, color="black", face="bold")) + 
    labs(x="Risk distribution per software version and subsystem type", y="Normalized risk value") + 
    guides(color=guide_legend("Version")) 

마지막 플롯은 내가 좋아하는 것 같습니다.

Final plot

-1

범례 그룹화 및 생성을 위해 fill 인수를 사용하고 있습니다. 대신 scale_color_manual 대신 scale_fill_manual을 사용하여 기존 범례를 무시할 수 있습니다.

+0

제안 해 주셔서 감사합니다. 'scale_fill_manual (name = "Version", labels = c ("v1.0", "v2.0", "v3.0", "v4.0", "v5.0") 다음 명령으로 시도했습니다. , 값 = c ("그레이", "블루", "그린", "레드", "블랙"))'결과는 두 번째 상자 플롯, 즉 두 개의 범례와 거의 동일합니다. –