2016-08-23 2 views
0

사용자가 플롯에 표시 할 데이터의 서브 세트를 결정할 수있는 간단한 사용자 인터페이스를 작성하려고합니다.R : 플롯에 표시된 데이터를 서브 세트하기위한 편리한 사용자 인터페이스

여기 내

그것은 작동하지만 정말 편리하지
require(ggplot2) 

x = runif(1e5,1,10) 
a = rep(0:9,each=1e4) 
b = rep(1:10,1e4) 
y = x^(a/b) 

DATA = data.frame(a=a,b=b,x=x,y=y) 

dummy=FALSE 
while(TRUE) 
{ 
    response = readline("Do you want to continue? (n/y): ") 
    while (response!="y") 
    { 
     if (response=="n") {dummy=TRUE;break} 
     response = readline("Do you want to continue? (n/y): ") 
    } 
    if (dummy) break 

    a_sub = readline(
     paste0("What subset for 'a' do you want?: (",paste(unique(DATA$a), collapse=","),") ") 
    ) 
    b_sub = readline(
     paste0("What subset for 'b' do you want?: (",paste(unique(DATA$b), collapse=","),") ") 
    ) 
    print(ggplot(data=subset(DATA,a==a_sub & b==b_sub), aes(x=x,y=y)) + geom_point()) 
} 

의 아주 바보로 이용하실 수 있습니다. 사용자가 마우스 클릭을 통해 원하는 값을 선택할 수있는 훨씬 나은 솔루션이있을 수 있습니다. 내 목적에 맞는 좋은 인터페이스의 예를 들어 주시겠습니까?

+1

[샤이니 (http://shiny.rstudio.com/gallery/). 또는 당신이 약간 용감하다면 [음모] (http://moderndata.plot.ly/new-feature-dropdown-menus-in-plotly-and-r/)를 사용하여 클라이언트 쪽을 수행하십시오. 또는 로컬에서 (https://rstudio-pubs-static.s3.amazonaws.com/627_e9264c581fde4fa4ad9d4e9353031226.html) 로컬로 조작 할 수 있습니다. – alistaire

답변

0

ggvis 시도해보십시오. this post 도면에서 :

library(ggvis) 
library(dplyr) 
DATA %>% 
    ggvis(~x, ~y) %>% 
    filter(a == eval(input_slider(0, 9))) %>% 
    filter(b == eval(input_slider(1, 10))) %>% 
    layer_points() 

enter image description here