ggplot2에서 추가 범례 제거


91

을 사용하여 결합 된 선과 점 플롯을 수행하려는 간단한 데이터 프레임이 ggplot2있습니다. 내 데이터가 다음과 같다고 가정합니다.

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), 
                 group=c(rep("a",10),rep("b",10)))

그리고 나는 줄거리를 만들려고합니다.

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g

결과는 한 가지 예외를 제외하고는 괜찮아 보입니다. alphageom_point레이어에 대한 추가 범례가 있습니다.

<code> geom_point </ code> 투명도에 대한 추가 범례

범례에 그룹 색상을 표시하지만 알파 설정을 표시하는 것은 표시하지 않으려면 어떻게해야합니까?

답변:


172

통화 내에서 미학을 설정 하거나 매핑 할 수 있습니다 ggplot.

  • 내부 aes(...)에 정의 된 미학 은 데이터에서 매핑 되고 범례가 만들어집니다.
  • 미학은 외부에서 정의하여 단일 값 으로 설정할 수도 있습니다 aes().

이 경우 설정 alpha = 0.8 하고 매핑 하려는 것으로 나타납니다 colour = group.

이것을하기 위해,

장소 alpha = 0.8밖에서에게 aes()정의를.

g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g

여기에 이미지 설명 입력

어떤을 위해 매핑 된 변수는 사용하여 전설의 모양을 supress 수있는 guide = 'none'적절한에 scale_...전화를 겁니다. 예.

g2 <- ggplot(df, aes(x = x, y = y, group = group)) + 
        geom_line(aes(colour = group)) +
        geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = 'none')

동일한 플롯을 반환합니다.

@Joran의 의견을 수정하십시오. 내 대답을보다 포괄적으로 만들었습니다.


18
OP가 미학을 매핑하는 것이 아니라 설정하기 때문에 이것은 올바른 방법이지만 일반적으로와 같은 것을 사용하여 범례의 모양을 억제 할 수 있습니다 g + scale_alpha(guide = "none").
joran 2012

과연. 대답은 정교화되었습니다. OP 문제에만 국한된 것이 아니라 포괄적 인 답변을 갖는 것이 더 합리적입니다.
mnel

4
추가 된 설명에 감사드립니다. 이것은 ggplot의 철학을 이해하는 데 큰 도움이됩니다.
Wilduck 2012

2
저는 1 년 넘게 ggplot을 사용해 왔으며 매핑되거나 설정된 변수의 차이점을 이해하지 못했습니다. 이것은 내가 본 것 중 가장 좋은 대답입니다. 축하합니다.
Amit Kohli

1
@theforestecologist 그것은 group미학이 자체적으로 스케일이나 가이드를 생성하지 않기 때문 입니다. 항상 다른 것을 수정하는 것입니다. "그룹"미학에 대한 전설은 결코 얻지 못할 것입니다.
joran

41

show.legend = F원하지 않는 부분 뒤에 코드를 추가하면 됩니다.

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)

1
이 (그것도 지 웁니다 비록 많은 오해까지) 설정 미학 대 매핑보다 훨씬 더 직관적이다
Wassadamo

1

이전 버전의 ggplot2 (0.9.2 이전 버전, 2012 년 후반에 출시됨)의 경우이 답변이 작동합니다.

나는 이것을 a로 시도했지만 colour_scale작동하지 않았습니다. 나타납니다 colour_scale_hue항목이 기본 매개 변수와 함수처럼 작동합니다 TRUE. 나는 추가 scale_colour_hue(legend=FALSE)했고 작동했습니다.

이것이 ggplot의 모든 색상 스케일 항목에 해당하는지 확실하지 않습니다.


3
호출 legend에서 사용 하는 scale_*것은 더 이상 사용되지 않습니다 scale_colour_hue(guide = "none").
Gregor Thomas

3
(가) 것을 고려 legend=FALSE@shujaa 코멘트 지적대로되지 않습니다, 이것은을 추가 즉, 효과적으로 중복 대답은 guide = "none"A와 scale_fill/color*기능.
David LeBauer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.