2011-09-20 5 views
3

왜 이런 일이 발생합니까? 그리고이 문제를 어떻게 해결할 수 있습니까? ggplot2에 간단한 막대 그래프를 그려 보면 "오류 : position_stack에 일정한 폭이 필요합니다"라고 표시됩니다.

> qplot(c(0,0,0,0,1e12)) 
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. 
Error: position_stack requires constant width 
> qplot(c(0,0,0,0,1e12), binwidth=1e12/30) 
Error: position_stack requires constant width 
> qplot(c(0,0,0,0,1e12), binwidth=1e10) # works 
> qplot(c(0,0,0,0,1e12), binwidth=1e11) # works 

나는 http://r.789695.n4.nabble.com/ggplot2-histograms-a-subtle-error-found-td2305814.html를 찾았지만 자신의 경우에 문제가 binwidth이 값보다 훨씬 작은 것이 었습니다. 여기에 비슷한 순위가 있습니다.

+0

궁금한 점이 있습니다. 그 이유에 대해 더 관심이있을 수 있지만,'position = "identity"를 설정하면 문제가 해결되는 것 같습니다. – joran

+0

버그를 신고 해주세요. – hadley

답변

2

저는 여기서 사지에 나가서 이것이 수치적인 정밀 문제라고 생각합니다. tracebackdebug와 약간의 뒤를 쫓고있는 문제는 함수 collide이 검사에서 발생하는 것을 알 수 :

if (check.width && length(widths) > 1 && sd(widths) > 1e-06) { 
      stop(name, " requires constant width", call. = FALSE) 
} 

폭은 너무 큰 수있는 SD 충분한 단지 다릅니다. 작은 값으로이 문제가 사라진다는 사실은 수치적인 정밀도 문제에 대한 증거처럼 보인다.

그러나 너비를 생성하는 데 사용 된 값은 collide에서 비롯되지 않으므로 실제 문제는 추가로 상류에서 발생합니다. 익숙하지 않은데 ggplot의 내면을 자세히 살펴볼 필요가 있습니다.

관련 문제