专栏首页生信小驿站shiny随手日记1

shiny随手日记1

  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不会生成空白图片,解决了我们的问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 盘点 Shiny 中的各种主题和 UI 插件

    •shinythemes https://github.com/rstudio/shinythemes - 在 Shiny 中 使用 Bootswatch 主题...

    生信菜鸟团
  • 盘点 Shiny 中的各种主题和 UI 插件

    •shinythemes https://github.com/rstudio/shinythemes - 在 Shiny 中 使用 Bootswatch 主题...

    王诗翔呀
  • 跟我一起玩转shiny

    尤为重要的是随着单细胞转录组的流行,它附带的大量数据的探索和展示也开始需要独立的网页工具,也就是说一篇单细胞文章就得开发一个网页工具。而网页工具的开发其实是一门...

    生信技能树
  • 「R」Shiny 教程笔记

    Inputs 是与用户交互的组件,用户获取用户输入。Outputs 是 Shiny 通过响应用户输入而在指定区域展示的输出,一般为图表。每个输入组件都有唯一标识...

    王诗翔呀
  • 把你的shiny网页工具部署在云服务器

    我们课题组有一份油菜的核心种质资源,前几年经重测序之后已经发表了。但是课题组后面很多的项目都基于这份核心种质资源,实验室成员常常需要检索分析某些基因的特定SNP...

    生信技能树
  • Shiny-R语言轻松开发交互式web应用

    Shiny是RStudio公司开发的新包,有了它,可以用R语言轻松开发交互式web应用。

    生信交流平台
  • R︱shiny实现交互式界面布置与搭建(案例讲解+学习笔记)

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! htt...

    素质
  • 黑客声称窃取GitHub 500GB源代码,准备不出售直接泄露

    “我们已经成功入侵微软的GitHub私人储存库,并从中窃取了500GB的数据,本来打算在暗网上出售的,现在改变主意了,打算免费发布。”

    FB客服
  • shiny资源汇总

    资源背后的机构和开发者,都可以看看,他们的网站,个人Twitter之类的,寻宝哦。

    生信技能树

扫码关注云+社区

领取腾讯云代金券