2013-05-15 4 views
3

많은 비슷한 플롯의 생성을 표준화하기 위해 ggplot2로 플롯을 작성하려고합니다. theme(), stat _ *() 또는 geom _ *()을 + 연산자와 함께 사용하여 여러 옵션을 쌓을 수 있다면이 함수를 어떻게 감쌀 수 있습니까?ggplot2, 어떻게 함수 내에서 데이터 프레임 요소에 액세스합니까?

내가 예를 들어, 데이터 프레임의 부분을 플롯하는 함수를 작성하고 싶습니다은 :

library(ggplot2) 
test<-function(fdata,fx){ 
    p<-ggplot(fdata,aes(x=fx,y=mpg))+geom_point() 
    print(p)}; 
test(mtcars,wt) 

은의 오류 반환 :

Error in eval(expr, envir, enclos) : object 'fx' not found 

을하지만, 로컬에 미적 정의를 변경 범위가 지정된 변수 (예 : x = fx에서 x = wt)는 작동하지만 함수의 두 번째 옵션 인 'fx'는 사용하지 않습니다.

library(ggplot2) 
test<-function(fdata,fx){ 
    p<-ggplot(fdata,aes(x=wt,y=mpg))+geom_point() 
    print(p)}; 
test(mtcars,wt) 

데이터 프레임의 다른 변수로부터 플롯을 생성하는 함수를 작성하려면 어떻게해야합니까?

예. 대신 aes를 사용하는 aes_string를 사용하는

test(mtcars,'wt') #scatter plot of wt x mpg 
test(mtcars,'disp') #scatter plot of disp x mpg 
test(mtcars,'hp') #scatter plot of hp x mpg 

답변

3

여기에 트릭이 : 내가 좋아하는, 비슷한 플롯을 얻기 위해 여러 번 호출 할 수 있도록 기능 검사를 쓰기 I 어떻게. 전자는 문자열을 미학으로 전달할 수 있습니다. 이렇게하면 미적 문자열을 포함하는 변수를 전달할 수 있습니다. mtcars를 플로팅하는 경우 'wt'. 다음과 같이 코드를 수정해야합니다.

library(ggplot2) 
test <- function(fdata, fx) { 
    p <- ggplot(fdata, aes_string(x = fx, y = "mpg")) + geom_point() 
    print(p) 
} 
test(mtcars, "wt") 
관련 문제