首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shiny随手日记1

shiny随手日记1

作者头像
用户1359560
发布2020-12-22 15:22:05
2540
发布2020-12-22 15:22:05
举报
文章被收录于专栏:生信小驿站生信小驿站
  1. 问题描述:shiny在没有输入数据的数据下,也会生成空白图片,造成不美观。
library(shiny)

ui <- fluidPage(
  
  fluidRow(
    column(width=1),
    column(  textInput(inputId = "test1", label = "", 
                       value = ""), width=2,style="background-color:lavender;border-radius: 10px")),
  
  hr(),
  
  
  fluidRow(
    column(width=1),
    column(  textInput(inputId = "test2", label = "", 
                       value = ""), width=2,style="background-color:lavender;border-radius: 10px")),
  
  hr(),
 
  
  actionButton("gobutton1","Start1"),
  
  actionButton("gobutton2","Start2"),
  
  fluidRow(
    mainPanel(
      plotOutput("distPlot1"))),
  
  hr(),

  
  fluidRow(
    mainPanel(
      plotOutput("distPlot2")))
  
  
)

server <- function(input,output){
  
  data1 <- eventReactive(input$gobutton1,{
    if(is.null(input$test1)){
      return()
    }
    
    num <- input$test1
    
    num <- as.numeric(num)
    
    num1 <-  num * 2;num2 <-  num * 3;num3 <-  num * 4;num4 <-  num * 5;num5 <-  num * 6
    
    dt <- data.frame(id=paste0('id',1:5), number = c(num1, num2, num3, num4, num5))
    
    dt
    
  })
  
  data2 <- eventReactive(input$gobutton2,{
    if(is.null(input$test2)){
      return()
    }
    
    num <- input$test2
    
    num <- as.numeric(num)
    
    num1 <-  num / 2 ;num2 <-  num / 3;num3 <-  num / 4;num4 <-  num /  5;num5 <-  num / 6
    
    dt <- data.frame(id=paste0('id',1:5), number = c(num1, num2, num3, num4, num5))
    
    dt
    
  })
  
  
  output$distPlot1 <- renderPlot({
    
    data <- data1()
    
    
    library(ggplot2)
    
    
    ggplot(data = data, mapping = aes(x = factor(id), 
                                         y = number, group = 1)) + geom_point() +
      geom_line() + 
      xlab('')+ ylab('Probility')+
      theme(axis.text.x = element_text(vjust = 0.5,
                                       hjust = 0.5, 
                                       angle = 45))
    
  })
  
  output$distPlot2 <- renderPlot({
    
    data <- data2()
    
    
    library(ggplot2)
    
    
    ggplot(data = data, mapping = aes(x = factor(id), 
                                      y = number, group = 1)) + geom_point() +
      geom_line() + 
      xlab('')+ ylab('Probility')+
      theme(axis.text.x = element_text(vjust = 0.5,
                                       hjust = 0.5, 
                                       angle = 45))
    
  })
  
}

shinyApp(ui=ui, server=server)

解决问题的关键是:

  data1 <- eventReactive(input$gobutton1,{
    if(is.null(input$test1)){
      return()
    }
    
    num <- input$test1
    
    num <- as.numeric(num)
    
    num1 <-  num * 2;num2 <-  num * 3;num3 <-  num * 4;num4 <-  num * 5;num5 <-  num * 6
    
    dt <- data.frame(id=paste0('id',1:5), number = c(num1, num2, num3, num4, num5))
    
    dt
    
  })

该函数在默认不输入的情况下,会生成null,而导致后续的ggplot2不会生成空白图片,解决了我们的问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档