【问题标题】:use function to plot in shiny使用函数绘制闪亮
【发布时间】:2017-01-23 13:20:33
【问题描述】:

我使用一个函数在 R 中绘图,因为这是用于绘图的相当大的代码(六边形等)。为了简洁的代码,我把它放在一个函数中。

它是关于 SOM 算法的,目前这并不重要,但我创建了我需要的数据,然后我通常使用以下代码绘制它:

mydata <- som_model$codes
  var <- 1
  title <- names(som_model$data)[var]
  dataplot <- matrix(mydata[,var],nrow=gridsize,ncol=gridsize,byrow=TRUE)

  source('plotHexMap.R')
  plotHexMap(dataplot,title,gridsize)

所以现在我想在 Shiny 中执行此操作:

 observe({
  if(input$plottrained>0){

        var <- 1
        title <- names(som_model$data)[var]
        dataplot<-matrix(mydata[,var],nrow=gridsize,ncol=gridsize,byrow=TRUE)

       source("plotHexMap.R")
       output$plot1 <-renderPlot({plotHexMap(dataplot,title,gridsize)})       

    }

  })

好的,所以这不起作用,但是当我将绘图写入全局变量(使用

 observe({
    if(input$plottrained>0){

        var <- 1
        title <- names(som_model$data)[var]
        dataplot<-matrix(mydata[,var],nrow=gridsize,ncol=gridsize,byrow=TRUE)

       source("plotHexMap.R")
       plot1 <<-renderPlot({plotHexMap(dataplot,title,gridsize)})       

    }

  })

我在这里缺少什么?正常的 R 环境不需要从函数中绘制这个,闪亮需要什么?

非常感谢您对此的任何帮助!提前致谢,

彼得

【问题讨论】:

    标签: r function plot shiny


    【解决方案1】:

    在服务器中尝试renderPlot,而不是observe

    output$myplot <- renderPlot({
        if(input$plottrained>0){
            var <- 1
            title <- names(som_model$data)[var]
            dataplot<- matrix(mydata[,var],nrow=gridsize,ncol=gridsize,byrow=TRUE)
    
           source("plotHexMap.R", local = TRUE)     #assuming this file is actually local for you
           plot1 <- plotHexMap(dataplot,title,gridsize)       
        }
        else{return(NULL)}
      })
    

    然后在ui中绘制输出:

    plotOutput('myplot')
    

    【讨论】:

    • 现在不幸的是,我不能再使用我的循环来绘制多个这些数字了。但是我对此还没有确切的问题,因为我使用动态 renderUI 执行此操作,然后在其中多次绘制。或者您是否碰巧知道如何使用循环轻松绘制更多这些?
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 2020-04-14
    • 2016-08-25
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2016-08-13
    相关资源
    最近更新 更多