2014-11-19 1 views
4

검색을 조금 해본 후에도 여전히 행복하지 않습니다!ggplot2 y 축을 원점에서 시작하고 Y 축 상한을 부동 상태로 만듭니다.

원점에서 시작하여 모든 데이터를 명확하게 보여주는 Y 축을 가진 그래프를 만드는 간단한 방법이 있습니까?

set.seed(123) 
my.data<- data.frame(x.var = rnorm(100, 50), 
        y.var = rnorm(100, 50,10)) 


## Annoying because it doesn't start at origin 
ggplot(my.data, aes(x.var, y.var))+ 
    geom_point() 


## Annoying because origin is not at bottom 
ggplot(my.data, aes(x.var, y.var))+ 
    geom_point()+ 
    expand_limits(y = 0) 

## Annoying because point is cut off 
ggplot(my.data, aes(x.var, y.var))+ 
    geom_point()+ 
    scale_y_continuous(expand = c(0,0))+ 
    expand_limits(y = 0) 

질문 "ggplot2에 0에서 시작 (R)를 원점을 강제로"

로 끝나는 가기 대답은 "당신은 일을 조금 조정해야 할 수도 있습니다 : 여기

내 문제입니다 포인트가 끊어지지 않도록하기 "

왜 이런 일이 발생합니까? 수동으로 축을 조정할 수는 있지만 매번 그 작업을 수행하고 싶지 않습니다!

인터넷에서 어떤 녀석은 상대적으로 간단한 아이디어 무엇인지 내가 좋아하는 느낌을 위해 복잡하게 보인다

#Find the current ymax value for upper bound 
#(via http://stackoverflow.com/questions/7705345/how-can-i-extract-plot-axes-ranges-for-a-ggplot2-object#comment24184444_8167461) 
gy=ggplot_build(g)$panel$ranges[[1]]$y.range[2] 
g=g+ylim(0,gy) 

#Handle the overflow by expanding the x-axis 
g=g+scale_x_continuous(expand=c(0.1,0)) 

를 포함하는 솔루션을 제공합니다. 내가 놓친 게 있니?

감사합니다.

+1

또는 @의 joran의 ylimits를 사용하여이'ggplot (my.data, AES (x.var, y.var)) + geom_point() + coord_cartesian (ylim =에 c (사용 0, 1.05 * max (my.data $ y.var)))' – rawr

+0

http://stackoverflow.com/q/11214012/892313이 질문에 대한 답변을 제공합니까, 아니면 정확히 y- 축의 하단이 필요합니까 0을 채우지 않고 (y 축의 상단에는 여전히 일반 여백이 있습니다)? –

+1

@BrianDiggs 맨 아래에 일반 패딩이없고 패딩이 없기를 바랬습니다. 어쩌면 y = 0을 그래프의 아래쪽 가장자리로 가져 가려는 욕구가 재평가되어야합니다. 정보를 최상으로 표시하는 방법에 대한 질문 인 것 같습니다. – Michael

답변

2

왜 그냥 :

ggplot(my.data, aes(x.var, y.var))+ 
    geom_point()+ 
    scale_y_continuous(expand = c(0,0))+ 
    expand_limits(y = c(0,1.05 * max(my.data$y.var))) 
+0

모든 변수 및 데이터 세트에 대해 다른 수정이 필요하지만 작동한다고 가정 해 봅니다. 나는 그것을 함께 사용하고 싶다. – Michael

+0

@Michael 자동으로 계산되지 않는 사용자 지정 축 제한이 필요한 경우 직접 계산해야합니다. 각 데이터 세트. 내 자신의 코드에서, 만약 내가 까다로운 축 요구 사항이 있다면 입력으로 사용되는 모든 데이터 프레임을 사용하여 필요한 범위를 계산하는 코드를 작성합니다. – joran

+0

기원을 표시하는 옵션을 호출하여 ggplot이 데이터를 잘라내는 플롯을 생성한다는 것이 이상하게 보인다고 가정합니다. 내가 뭔가를 놓친 것일 수도 있지만 매회 수동으로 제한을 확장하는 것 외에는 다른 방법이 없을 수도 있습니다. – Michael