데이터를 제거하지 않고 ggplot2 축 제한 (제한 외부) : zoom


106

ggplot에서 축 제한을 지정하면 외곽 지점이 제거됩니다. 포인트에 대해서는 괜찮지 만 지정된 범위와 교차하는 선을 그릴 수 있지만 ggplot의 range또는 xlim/ylim메서드는이를 제거합니다. 외부 데이터를 제거하지 않고 플롯 축 범위를 지정하는 다른 방법이 있습니까?

예 :

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)

답변:


168

Hadley는 99 쪽에서 이것을 설명합니다. 그의 ggplot2 책 133 권 (1 판) , 또는 두 번째 판이 있는 경우 160-161 페이지 .

문제는 말했듯 limits이 스케일 또는 설정 내부로 ylim()인해 데이터가 제한되므로 데이터가 버려진다는 것입니다. 실제 확대 / 축소 (모든 데이터 유지)의 경우 데카르트 좌표계 (또는 기타 좌표계 https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ) 내부에 제한을 설정해야합니다 . 자세한 내용은 http://docs.ggplot2.org/current/coord_cartesian.html을 참조하십시오.

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))

여기에 이미지 설명 입력


2
내가 사용하기 때문에 coord_cartesian이 옵션이 아닌 경우 어떻게 geom_boxplot합니까?
Everettss

3
coord_cartesiangeom_boxplot또는 다른 기하학 과 함께 여전히 옵션입니다 .
eipi10

예,하지만 수평 상자 그림을 수행하는 방법을 알아낼 coord_flip수 없습니다. 두 개의 좌표 를 필요로 하고있을 수 없기 때문입니다 .
jtr13

2
이 경우 coord_flip대신 ylim을 설정할 수 있습니다 coord_cartesian.
jtr13
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.