2013-12-23 2 views
2

g의 다른 간격에 대해 다른 색상 막대가있는 막대 그래프를 그리기 위해 ggplot2를 사용하려고합니다.ggplot2의 aes()에서 cut()에 변수 전달하기

에 해들리의 솔루션을 참조 후 : how to define fill colours in ggplot histogram?, 나는 다음에 도착 :

나는 변수에 브레이크 포인트를 정의 할 때 그러나, MyBreaks가) (AES로 전달되는
library(ggplot2) 

set.seed(1) 
a <- seq(from=1, to=10000) 
b <- rnorm(10000) 
c <- data.frame(a,b) # Convert to DF 

ggplot(c, aes(x=b, fill=cut(..x.., breaks=c(-2, -1, -0.5, 0, 0.5, 1, 2)))) + 
    geom_histogram(binwidth=0.1, color="steelblue") 

, 오류가 발생했습니다 : "cut.default (x, breaks = MyBreaks) 오류 : 'MyBreaks'객체를 찾을 수 없습니다." 오류를 생성 한

내 코드 :

MyBreaks <- c(-2, -1, -0.5, 0, 0.5, 1, 2) 
ggplot(c, aes(x=b, fill=cut(..x.., breaks=MyBreaks))) + 
    geom_histogram(binwidth=0.1, color="steelblue") 

나는 다른 사용자들에 의해 발생하는 유사한 오류에 대한 몇 가지 연구는했지만 솔루션은 나를 위해 작동하지 않았다.

예를 들어, How to use earlier declared variables within aes in ggplot with special operators (..count.., etc.)의 해결책은 "오류 : 미학은 길이 1이거나 dataProblems : MyBreaks와 동일한 길이 여야합니다. 내 코드입니다 : 다음 Local Variables Within aes에 솔루션을 시도했지만이 같은 준

ggplot(c, aes(x=b, MyBreaks1=MyBreaks, fill=cut(..x.., breaks=MyBreaks1))) + 
    geom_histogram(binwidth=0.1, color="steelblue") 

"cut.default 오류 (X, 나누기 =의 MyBreaks) : 객체 MyBreaks '찾을 수 없습니다." 내 코드는 다음과 같습니다.

.e <- environment() 
ggplot(c, aes(x=b, fill=cut(..x.., breaks=MyBreaks)), environment = .e) + 
    geom_histogram(binwidth=0.1, color="steelblue") 

저는 기본적인 프로그래밍을했지만 R의 학습 곡선은 정말 가파릅니다. 누군가가 도울 수 있다면 고맙겠습니다!

미리 감사드립니다.

답변

1

이것은 Roland의 코멘트 How to use earlier declared variables within aes in ggplot with special operators (..count.., etc.)에서 발췌 한 것입니다.

ggplot(c, aes(x=b, fill=cut(..x.., breaks=get("MyBreaks", envir=.GlobalEnv)))) + 
geom_histogram(binwidth=0.1, color="steelblue") 
+0

빠른 응답 주셔서 감사합니다. @Jake! 이 방법이 효과가있는 이유는 무엇입니까? 너무 번거 롭다면 URL을 포함시켜주십시오. – NoviceProg

+0

@NoviceProg 오류 메시지보다 더 많은 정보를 제공 할 수는 없습니다. 'aes '에 전달 된 인수는 길이 1 또는 데이터와 동일한 길이 여야합니다. 링크에서'k'는 하나의 숫자이므로 길이가 1입니다. 길이 제한이있는 이유를 알아 내기 위해'ggplot2' 소스 코드를 살펴볼 수 있습니다. –

+0

아무 문제 없습니다. @Jake, 당신은 이미 큰 도움을주었습니다. ! 방금 R에서 한 달간 시작했고 그 복잡성 때문에 이미 압도당했습니다. 이 시점에서 '왜'는 '어떻게'와 '무엇'보다 보조적입니다. 도중에 다른 해결책이 있는지 살펴 봅시다. 다시 한 번 감사드립니다! – NoviceProg