2017-02-03 1 views
0

어떻게 할 수 있습니까? ggplot (기능상?)으로 자동화하여 플롯 할 열을 선택할 수 있습니다. 예 : 다음과 같은 데이터가 주어진 :하지만와, Z 에 대한 우선 음모 X에 대한 Y 다음 Y 나는 (단순) 코드 아래 시도 :함수에서 ggplot 플롯을 자동화하는 방법은 무엇입니까? - R

DT <- data.frame(y=seq(0,10,1),x=seq(0,20,2),z=seq(0,30,3)) 

나는 예를 들어 싶습니다 성공 :

fun<- function (y,x){ 
    Yaxis=paste(y) 
    Xaxis=paste(x) 

    Plot <- ggplot() + geom_point(data = DT, 
          aes(x=Yaxis, y=Xaxis)) 
return(Plot) 
} 
fun("y","x") 
fun("y","z") 
+1

봐 유연한 제목을 만들어, 더 플롯을 사용자 정의 할 수 있습니다,? aes_string 너무 도움이 될 것입니다. – Haboryme

답변

0

이 같은 것을 의미합니까?

# create the dataset 
DT <- data.frame(y=seq(0,10,1),x=seq(0,20,2),z=seq(0,30,3)) 

# plot data as categorical 
fun<- function (df, xaxis, yaxis){ 
    # convert numeric to character 
    Yaxis=paste(df[, yaxis]) 
    Xaxis=paste(df[, xaxis]) 
    # create the plot object 
    Plot <- ggplot() + geom_point(data = df, 
           aes(x=Yaxis, y=Xaxis)) 
    # plot it 
    return(Plot) 
} 
# plot y on horizontal, x on vertical 
fun(DT,"y","x") 
fun(DT,"y","z") 

# plot data as numeric 
fun2 <- function (df, xaxis, yaxis){ 
    Yaxis=df[, yaxis] 
    Xaxis=df[, xaxis] 

    Plot <- ggplot() + geom_point(data = df, 
           aes(x=Yaxis, y=Xaxis)) 
    return(Plot) 
} 
# plot y on horizontal, x on vertical 
fun2(DT,"y","x") 
# plot y on horizontal, z on vertical 
fun2(DT,"y","z") 

당신은 분명히 축 말뭉치 주석 등 ggplot2 비 표준 평가에

+1

'Yaxis'와 같은 새로운 변수를 생성 할 필요가 없으며 간단히'aes_string'을 사용하여'xaxis'를'ggplot2'에 직접 전달할 수 있습니다. –

+0

충분히 좋았을 텐데, 나는 코드에서'paste '를 사용하여 혼란 스러웠을 것이고 그것을 완전히 제거하기를 원하지 않았다. 당신은 그 기능이 향상 될 수 있다고 맞습니다. 하지만 ggplot을 자신의 함수로 묶어서 더 쉽게 호출하는 방법을 보여주고 있다고 생각합니다. – ira

+0

친애하는 @Paul과 @Ira, 많은 감사합니다 ... 실제로'aes_string'은 완벽하게 작동합니다 ... 나는 그 명령을 놓쳤습니다. 건배 – Rui

관련 문제