2016-03-21 2 views
2

Я строю блестящее приложение, чтобы показать некоторые данные контроля качества нашим клиентам. Сначала у меня было приложение, созданное с функциональностью GGplot. Теперь я конвертирую все графики в вывод Plotly. Для одного из этих участков (ящик). У меня проблема, что я не могу передать блестящий селектор ввода в сюжет.Блестящий вход для Plotly не создает график

В GGplot нет проблем, и сюжет изменяется каждый раз, когда я выбираю другой plotColumn. Здесь я решил проблему разбора столбцов с помощью функции aes_string. В основном я ищу что-то подобное в сюжете.

Рабочий GGPLOT пример:

ggplot(finalDf, aes_string("runName",input$getBoxplotField),na.rm = T) + 
     geom_boxplot(aes_string(fill="runName"), notch = F) + 
     geom_jitter() + 
     scale_y_continuous(labels = format1) + 
     theme_bw() 

Не работает Plot_ly пример

p <- plot_ly(finalDf,x = runName, y = input$getBoxplotField, type = "box") 

exampleDf

> dput(head(finalDf)) 
structure(list(runName = c("Gentrap.1451849446759", "Gentrap.1451849446759", 
"Gentrap.1451849446759", "Gentrap.1451849446759", "Gentrap.1451849446759", 
"Gentrap.1451849446759"), sampleName = c("Hart_FC42b_L5_I2_SRD329", 
"S1", "S2", "S3","S4", "S5"), readGroupName = c(NA, 
NA, NA, NA, NA, NA), maxInsertSize = c(227615351L, 202850798L, 
249001722L, 234388122L, 188295691L, 249009605L), medianCvCoverage = c(0.501303, 
0.494183, 0.574364, 0.487233, 0.495491, 0.483041), medianInsertSize = c(197L, 
203L, 200L, 208L, 200L, 194L), median3PrimeBias = c(0.283437, 
0.263973, 0.372476, 0.266946, 0.296308, 0.292954), median5PrimeBias = c(0.139005, 
0.21233, 0.123449, 0.185168, 0.169128, 0.152902), median5PrimeTo3PrimeBias = c(0.586081, 
0.9234, 0.409042, 0.83276, 0.680496, 0.640518), nBasesAligned = c(1627112497, 
1572782400, 1772774189, 1595461211, 1593529487, 1705441762), 
    nBasesCoding = c(795255442, 778886694, 762223625, 819014623, 
    759061861, 838846117), nBasesIntergenic = c(140893219, 176728812, 
    194156767, 120900630, 137267440, 148815172), nBasesIntron = c(134528982, 
    111795186, 121091943, 96554581, 142587231, 139962698), nBasesRibosomal = c(NA, 
    NA, NA, NA, NA, NA), nBasesUtr = c(556434854, 505371708, 
    695301854, 558991377, 554612955, 577817775), nCorrectStrandReads = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_ 
    ), nIncorrectStrandReads = c(NA_integer_, NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_), nReadsAligned = c(33157934L, 
    32082625L, 36181227L, 32595741L, 32538544L, 34783342L), nReadsProperPair = c(31935921L, 
    30983730L, 35015854L, 31358224L, 31405592L, 33479007L), nReadsSingleton = c(3919886L, 
    4311016L, 4382092L, 3848808L, 3873270L, 4122759L), nReadsTotal = c(37077604L, 
    36393382L, 40563115L, 36444288L, 36411547L, 38905908L), pctChimeras = c(0.004783, 
    0.003078, 0.003063, 0.004278, 0.002983, 0.00485), rateIndel = c(0.000071, 
    0.000076, 0.000081, 0.000066, 0.000072, 0.00007), rateReadsMismatch = c(0.001438, 
    0.001643, 0.001627, 0.001467, 0.001716, 0.001471), stdevInsertSize = c(120.677992, 
    129.927513, 114.820226, 138.486257, 118.98163, 115.25774), 
    group = c("Gentrap.1451849446759", "Gentrap.1451849446759", 
    "Gentrap.1451849446759", "Gentrap.1451849446759", "Gentrap.1451849446759", 
    "Gentrap.1451849446759")), .Names = c("runName", "sampleName", 
"readGroupName", "maxInsertSize", "medianCvCoverage", "medianInsertSize", 
"median3PrimeBias", "median5PrimeBias", "median5PrimeTo3PrimeBias", 
"nBasesAligned", "nBasesCoding", "nBasesIntergenic", "nBasesIntron", 
"nBasesRibosomal", "nBasesUtr", "nCorrectStrandReads", "nIncorrectStrandReads", 
"nReadsAligned", "nReadsProperPair", "nReadsSingleton", "nReadsTotal", 
"pctChimeras", "rateIndel", "rateReadsMismatch", "stdevInsertSize", 
"group"), row.names = c(NA, 6L), class = "data.frame") 

server.R

shinyServer(function(input, output, session) { 
    output$selectBoxplotField <- renderUI({ 
    selectInput("getBoxplotField", label = "Select variable to plot", choices = names(getAllSampleStats())) 
    }) 

output$boxplot <- renderPlotly({ 
    finalDf #as defined above in the example 
    p <- plot_ly(finalDf, x = runName, y = input$getBoxplotField , type = "box") 
}) 
} 

GUI.R

shinyUI(navbarPage(
    theme = "bootstrap_sandstone.css", 
    "SPIN", fluid = T, 
    tabPanel("Gentrap", 
      fluidPage(fluidRow(
      sidebarlogin(pipelineName = "gentrap"), 
      column(10, 
        tabsetPanel(
         tabPanel("Metrics distribution", 
           fluidRow(
           column(2), 
           column(8, plotlyOutput("boxplot")), 
           column(2) 
           ), 
           fluidRow(
           column(3, uiOutput("selectBoxplotField")), 
           column(3, checkboxInput("checkboxplot", label = "Compare to All", value = TRUE)) 
           ), 
           fluidRow(
           column(9, helpText("If no plot shows up it means this data is not present in the Sentinel QC database")) 
           )), 
        )) 
      ))) 
)) 
+0

вам нужно будет указать ваш server.R и ui.R, а – MLavoie

+0

@MLavoie Спасибо для головок старался максимально свести к минимуму пример. –

+0

Я знаю только немного замысловатого, не могли бы вы рассказать мне, почему вы используете ysrc? Я ничего не вижу в этом руководстве? Я считаю, что это только для python – MLavoie

ответ

1

Проблема фиксируется путем пропускания DF плюс столбцы непосредственно на оси х и у первых, не передавая имя DF в качестве аргумента.

Правильный участок будет сформирован, когда это будет сделано:

plot_ly(x = finalDf[,'runName'], y = finalDf[,input$getBoxplotField] , type = "box", color = 'red') %>% 
    layout(xaxis = list(showticklabels = FALSE, title = ''), yaxis = yName) 

Это неправильно:

plot_ly(finalDf, x = runName, y = input$getBoxplotField , type = "box", color = 'red') %>% 
    layout(xaxis = list(showticklabels = FALSE, title = ''), yaxis = yName) 
Смежные вопросы