2016-04-15 2 views
0

У меня есть реактивная панель рассеивания ggvis (layer_points) в блестящей форме. Теперь я хочу добавить горизонтальную линию и вертикальную линию на графике, чтобы она соответствовала медианной оси x/y.shiny + ggvis: как добавить строку (медианную) к диаграмме рассеяния?

Я знаю, как вычислить его, но не как его отобразить в том же сюжете. мой код до сих пор:

vis <- reactive({ 
    # Lables for axes 
    xvar_name <- names(axis_vars)[axis_vars == input$xvar] 
    yvar_name <- names(axis_vars)[axis_vars == input$yvar] 

    xvar <- prop("x", as.symbol(input$xvar)) 
    yvar <- prop("y", as.symbol(input$yvar)) 

    gegevens %>% 
    ggvis(x = xvar, y = yvar) %>% 
    layer_points(size := 50, size.hover := 200, 
       fillOpacity := 0.2, fillOpacity.hover := 0.5, 
       stroke = ~bron, key := ~Project.ID) %>% 
    add_tooltip(gegevens_tooltip, "hover") %>% 
    add_axis("x", title = xvar_name, format='d', grid = FALSE) %>% 
    add_axis("y", title = yvar_name, format='d', grid = FALSE) %>% 
     add_legend("stroke", title = "Gegevens van:", values = c("A", "B")) %>% 
    scale_numeric("x", trans = "log", expand=0) %>% 
    scale_numeric("y", trans = "log", expand=0) %>% 
    scale_nominal("stroke", domain = c("A", "B"), 
        range = c("blue", "#aaa")) %>% 
    set_options(width = 600, height = 600) 
}) 

vis %>% bind_shiny("plot1") 

вычислить медиану я использую:

output$defects <- renderText ({ 
    d <- median(gegevens()$Total.Defects.Delivered) 
    paste("de mediaan voor totaal aantal Defects is:", d) 
}) 

Много спасибо за помощь.

+0

Я думаю, что [это] (http://stackoverflow.com/questions/31666210/how-can-i-add-a-horizontal-line-in-ggvis) ответит на ваш вопрос, ответ или комментарий , – aosmith

+0

это действительно хорошая идея использовать мутацию, а затем отобразить ее на сюжет. Но я просто не могу заставить его работать. Проблема состоит в том, что медиана должна рассчитываться каждый раз, когда изменяется вход. как показано выше, я знаю, как вычислить медиану даже в реактивной. Но я не знаю, чтобы добавить его в сюжет. как его вычисляют после того, как будет сделан график, как я могу получить его в сюжете? может быть просто, но я просто не могу заставить его работать. –

ответ

0

Кажется, я неправильно понял ваш пример, но я получил его работу, сразу после того, как я опубликовал, я не мог. Ну вот решение:

vis <- reactive({ 
    # Lables for axes 
    xvar_name <- names(axis_vars)[axis_vars == input$xvar] 
    yvar_name <- names(axis_vars)[axis_vars == input$yvar] 

    xvar <- prop("x", as.symbol(input$xvar)) 
    yvar <- prop("y", as.symbol(input$yvar)) 

    gegevens %>% 
    ggvis(x = xvar, y = yvar) %>% 
    layer_points(size := 50, size.hover := 200, 
       fillOpacity := 0.2, fillOpacity.hover := 0.5, 
       stroke = ~bron, key := ~Project.ID) %>% 
    add_tooltip(gegevens_tooltip, "hover") %>% 
    add_axis("x", title = xvar_name, format='d', grid = FALSE, properties = axis_props(labels = list(angle = 90, align = "left"))) %>% 
    add_axis("y", title = yvar_name, format='d', grid = FALSE) %>% 
     add_legend("stroke", title = "Gegevens van:", values = c("A", "B")) %>% 
    scale_numeric("x", trans = "log", expand=0) %>% 
    scale_numeric("y", trans = "log", expand=0) %>% 
    scale_nominal("stroke", domain = c("A", "B"), 
        range = c("blue", "#aaa")) %>% 
    set_options(width = 600, height = 600) %>% 
    layer_paths(data = gegevens, x = median(gegevens()$kolomname.i.want.the.median.from)), y = yvar) %>% 
    layer_paths(data = gegevens, x = xvar, y = median(gegevens()$kolomname.i.want.the.median.from)) 
}) 

это дает мне крест в моем участке путем вычисления медианы х и у, даже если пользователь изменяет первоначальный ввод. конечно, мне нужно выяснить, как получить «kolomname.i.want.the.median.from» как x-/или y-значение.

, но теперь я знаю, как получить строки, и это был вопрос. Итак, спасибо вам, аосмит, за правильное направление.