R Shiny:如何在表格中包含直方图以使它们与表格的元素保持一致

时间:2016-12-21 21:38:13

标签: r shiny

下面的代码生成一个包含2行和2列的输入表(以简化情况 - 见下图)。基于这些输入,我想生成四个直方图,它们应该与输入框对齐。目前情况并非如此。理想情况下,表的rownames下面应该有一个空格,然后直方图的第一列(第二列)应该在表的第一(第二)列的正下方。

我想到的一个选项是以" matrix_input [i,j]< - hist(rnorm(n),breaks = 10)&#34的形式直接在表格中添加图表#34;,其中" n< - 输入[[paste0(" C",j," _A",i)]]"。这样,他们肯定会对齐。但是我没有管理它,因为我没有成功地使表格接受图表作为元素。第二个选项是使用表格和下面的图表对当前框架进行编码,但要确保它们已正确对齐。

我尝试了许多事情但没有成功。有人可以帮忙吗?任何投入将不胜感激。非常感谢。

library(shiny)
library(grid)
library(gridBase)

u <- shinyUI(navbarPage(
"My Application",
tabPanel("Component 1",
fluidPage(fluidRow(column(6,tableOutput('decision_Matrix'),plotOutput('decision_Matrix_plots')),column(6))
)),
tabPanel("Component 2")
))

s <- shinyServer(

function(input,output) {

output$decision_Matrix <- renderTable({
  matrix_input <- matrix(data = NA,nrow = 2,ncol = 2)
  for (j in 1:2) {
    for (i in 1:2) {
      matrix_input[i,j] <- paste0("<input id='C",j,"_A",i,"' type='number' class='form-control shiny-bound-input'  value='",input[[paste0("C",j,"_A",i)]],"'>")
    }
  }
  rownames(matrix_input) <- c("alternative1","alternative2")
  colnames(matrix_input) <- c("crit1","crit2")
  matrix_input
},include.rownames = TRUE,sanitize.text.function = function(x) x)

output$decision_Matrix_plots <- renderPlot({    

  layout(matrix(c(1,2,3,4),nrow = 2,ncol = 2))
  for (j in 1:2) {
    for (i in 1:2) {
      set.seed(123)
      n <- input[[paste0("C",j,"_A",i)]]
      if (is.null(n) || is.na(n) || n < 1) n <- 1
      hist(rnorm(n),breaks = 10,main=sprintf("histogram of rnorm( %d )",n))
    }
  }
  recordPlot()
})

})
shinyApp(ui = u,server = s)

enter image description here

0 个答案:

没有答案