ggplot에서 일부 범례 끄기


221

범례가 둘 이상인 ggplot이 있다고 가정합니다.

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

다음과 같이 모든 범례의 표시를 끌 수 있습니다.

(p1 <- p0 + theme(legend.position = "none"))

전달 show_guide = FALSEgeom_point(당 이 질문하는 ) 모양 전설 꺼집니다.

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

그러나 색상 범례를 대신 끄려면 어떻게해야합니까? show_guide어떤 범례를 적용 할지를 알려주는 방법은없는 것 같습니다 . 그리고 show_guide비늘이나 미학에 대한 논쟁 은 없습니다 .

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

이 질문 은 범례를 제어하는 ​​현대 (ggplot2 v0.9.2 이후) 방식 이 기능에 있음을 시사합니다 guides.

나는 같은 것을 할 수 있기를 원합니다

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

그러나 guide_legendshow 인수가 없습니다.

표시 할 범례를 어떻게 지정합니까?


6
최근 ggplot2업데이트 후 show_guide더 이상 사용되지 않으며로 대체되었습니다 show.legend.
PatrickT

답변:


294

를 사용 guide=FALSE하여 scale_..._...()범례를 억제 할 수 있습니다 .

예를 들어 연속 변수 (불 연속적이지 scale_colour_continuous()않기 때문에 length) 를 사용해야합니다 .

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

또는 기능 guides()을 사용하여 FALSE범례로 표시하고 싶지 않은 해당 요소 / 미학에 대해 설정해야 합니다 (예 : fill, shape) colour.

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

최신 정보

제공된 솔루션은 모두 새 ggplot2버전 2.0.0 에서 작동 하지만 movies이 라이브러리에는 더 이상 데이터 세트가 없습니다. 대신 ggplot2movies솔루션을 확인 하려면 새 패키지를 사용해야 합니다.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

6
scale_colour_continuous (guide = FALSE)는 ggplot2 0.9.3에서 작동하지 않지만 guides (colour = FALSE)는 문제를 해결합니다. 많은 Didzis 감사합니다!
Nikolay Nenov

1
@NikolayNenov Strange, 두 솔루션 모두 ggplot2 0.9.3.1에서 작동하기 때문에
Didzis Elferts

9
alpha의 범례 를 제거하고 싶습니다 . guides(alpha=FALSE)트릭을 수행하십시오. 감사합니다, Didzis.
l0o0

3
자체 참고 사항 :가 geom_linerange()있고 범례에 선 대신 십자가가 표시되면 show.legend=FALSE안에 삽입 하십시오 geom_linerange().
PatrickT

25

show.legend=FALSEGeom에 추가 하여 해당 범례를 억제 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.