使用函数绘制闪亮的图案

时间:2016-09-15 13:31:23

标签: r function plot shiny

我使用函数在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)})       

    }

  })

好的,所以这不起作用,但是当我将绘图写入一个全局变量(&lt;&lt ;-)时,它确实存在,我可以在图中看到它,所以通过这样做:

 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环境不需要从功能中绘制这个有什么特点?

真的很感激任何帮助!提前谢谢,

彼得

1 个答案:

答案 0 :(得分:0)

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

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:

plotOutput('myplot')