如何使用Shiny绘制上传的数据集?

哈默德

我是R-shiny应用程序的新手,我的应用程序很简单。它有两个选项卡,第一个选项卡,我上传一个文件,例如csv,然后在第二个选项卡中,我选择将要绘制的列,我的解决方案分散在几个示例中,每个示例与我的都不相同,我想要上传的数据集,不仅可以在上传时看到,而且可以在所有功能中使用。

我的服务器

library(shiny)
shinyServer(function(input, output) {
output$contents <- renderTable({
inFile <- input$file1

if (is.null(inFile))
  return(NULL)
read.csv(inFile$datapath, header=input$header, sep=input$sep, 
         quote=input$quote)

})
output$MyPlot <- renderPlot({
x    <- contents()$contents[, c(input$xcol, input$ycol)]
bins <- nrow(contents())
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
})

用户界面

library(shiny)
library(datasets)
shinyUI(fluidPage(
titlePanel("Column Plot"),
tabsetPanel(
tabPanel("Upload File",
         titlePanel("Uploading Files"),
         sidebarLayout(
           sidebarPanel(
             fileInput('file1', 'Choose CSV File',
                       accept=c('text/csv', 
                                'text/comma-separated-values,text/plain', 
                                '.csv'))

      ),
           mainPanel(
             tableOutput('contents')
           )
         )
),
tabPanel("First Type",
         pageWithSidebar(
           headerPanel('My First Plot'),
           sidebarPanel(
             selectInput('xcol', 'X Variable', names(content)),
             selectInput('ycol', 'Y Variable', names(content),
                         selected=names(content)[[2]])
           ),
           mainPanel(
             plotOutput('MyPlot')
           )
         )
)

)
)
)

我已经尝试过了,但是我只是从那开始,请问我该怎么做?

米哈尔·梅卡(Michal Majka)

您可以创建一个反应式数据集(例如data),您的应用程序将在其中读取上载的文件并更新输入-在这种情况下,数据框的名称会将其传递给render*函数。我在代码中做了一些更详细的注释。

library(shiny)
library(datasets)

ui <- shinyUI(fluidPage(
  titlePanel("Column Plot"),
  tabsetPanel(
    tabPanel("Upload File",
             titlePanel("Uploading Files"),
             sidebarLayout(
               sidebarPanel(
                 fileInput('file1', 'Choose CSV File',
                           accept=c('text/csv', 
                                    'text/comma-separated-values,text/plain', 
                                    '.csv')),

                 # added interface for uploading data from
                 # http://shiny.rstudio.com/gallery/file-upload.html
                 tags$br(),
                 checkboxInput('header', 'Header', TRUE),
                 radioButtons('sep', 'Separator',
                              c(Comma=',',
                                Semicolon=';',
                                Tab='\t'),
                              ','),
                 radioButtons('quote', 'Quote',
                              c(None='',
                                'Double Quote'='"',
                                'Single Quote'="'"),
                              '"')

               ),
               mainPanel(
                 tableOutput('contents')
               )
             )
    ),
    tabPanel("First Type",
             pageWithSidebar(
               headerPanel('My First Plot'),
               sidebarPanel(

                 # "Empty inputs" - they will be updated after the data is uploaded
                 selectInput('xcol', 'X Variable', ""),
                 selectInput('ycol', 'Y Variable', "", selected = "")

               ),
               mainPanel(
                 plotOutput('MyPlot')
               )
             )
    )

  )
)
)

server <- shinyServer(function(input, output, session) {
    # added "session" because updateSelectInput requires it


  data <- reactive({ 
    req(input$file1) ## ?req #  require that the input is available

    inFile <- input$file1 

    # tested with a following dataset: write.csv(mtcars, "mtcars.csv")
    # and                              write.csv(iris, "iris.csv")
    df <- read.csv(inFile$datapath, header = input$header, sep = input$sep,
             quote = input$quote)


    # Update inputs (you could create an observer with both updateSel...)
    # You can also constraint your choices. If you wanted select only numeric
    # variables you could set "choices = sapply(df, is.numeric)"
    # It depends on what do you want to do later on.

    updateSelectInput(session, inputId = 'xcol', label = 'X Variable',
                      choices = names(df), selected = names(df))
    updateSelectInput(session, inputId = 'ycol', label = 'Y Variable',
                      choices = names(df), selected = names(df)[2])

    return(df)
  })

  output$contents <- renderTable({
      data()
  })

  output$MyPlot <- renderPlot({
    # for a histogram: remove the second variable (it has to be numeric as well):
    # x    <- data()[, c(input$xcol, input$ycol)]
    # bins <- nrow(data())
    # hist(x, breaks = bins, col = 'darkgray', border = 'white')

    # Correct way:
    # x    <- data()[, input$xcol]
    # bins <- nrow(data())
    # hist(x, breaks = bins, col = 'darkgray', border = 'white')


    # I Since you have two inputs I decided to make a scatterplot
    x <- data()[, c(input$xcol, input$ycol)]
    plot(x)

  })
})

shinyApp(ui, server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JQPlot绘制大型数据集

来自分类Dev

子集数据并使用Shiny绘制此子集数据

来自分类Dev

如何在不同地块上绘制数据集

来自分类Dev

使用R Shiny上传后编辑数据框

来自分类Dev

CKAN-使用API上传带有标签的数据集

来自分类Dev

如何在Shiny中使数据集具有反应性?

来自分类Dev

使用相同的数据集绘制各种符号

来自分类Dev

如何使用我的数据集计算主成分分析以绘制显示PC1 vs PC2的图?

来自分类Dev

如何通过使用“ fileInput”功能绘制ggplot来上传上传的数据?

来自分类Dev

如何在Python中使用大数据集绘制热图

来自分类Dev

如何使用groubby使用matplotlib绘制数据

来自分类Dev

在Shiny R中绘制图形;使用重复循环绘制数据以进行自动分析

来自分类Dev

如何使D3从数据集的开始绘制轴?

来自分类Dev

绘制多维数据集

来自分类Dev

CKAN-使用API上传带有标签的数据集

来自分类Dev

如何在R中绘制地理参考数据集?

来自分类Dev

如何在OpenGL / C ++中绘制多维数据集?

来自分类Dev

使用colorcode绘制Fisher的Iris数据集

来自分类Dev

如何使用数据集的列

来自分类Dev

如何使用errbar绘制多个数据集?

来自分类Dev

如何使用函数绘制两个不同的数据集?

来自分类Dev

如何使用熊猫绘制年度数据集?

来自分类Dev

使用 griddata 绘制数据集而不取消异常值

来自分类Dev

如何在 Shiny 中使用 textInput 来命名上传数据框的列

来自分类Dev

如何绘制存储在 Pandas DataFrame 中的垂直数据集?

来自分类Dev

如何使用闪亮的应用程序绘制(ly)上传数据集的子集?

来自分类Dev

使用 lubridate 或 scales 绘制多个数据集

来自分类Dev

如何绘制每行一行的整个缩放数据集?

来自分类Dev

如何使用 Graphics2d.setPaint() 在 Java 中快速绘制大型数据集

Related 相关文章

  1. 1

    使用JQPlot绘制大型数据集

  2. 2

    子集数据并使用Shiny绘制此子集数据

  3. 3

    如何在不同地块上绘制数据集

  4. 4

    使用R Shiny上传后编辑数据框

  5. 5

    CKAN-使用API上传带有标签的数据集

  6. 6

    如何在Shiny中使数据集具有反应性?

  7. 7

    使用相同的数据集绘制各种符号

  8. 8

    如何使用我的数据集计算主成分分析以绘制显示PC1 vs PC2的图?

  9. 9

    如何通过使用“ fileInput”功能绘制ggplot来上传上传的数据?

  10. 10

    如何在Python中使用大数据集绘制热图

  11. 11

    如何使用groubby使用matplotlib绘制数据

  12. 12

    在Shiny R中绘制图形;使用重复循环绘制数据以进行自动分析

  13. 13

    如何使D3从数据集的开始绘制轴?

  14. 14

    绘制多维数据集

  15. 15

    CKAN-使用API上传带有标签的数据集

  16. 16

    如何在R中绘制地理参考数据集?

  17. 17

    如何在OpenGL / C ++中绘制多维数据集?

  18. 18

    使用colorcode绘制Fisher的Iris数据集

  19. 19

    如何使用数据集的列

  20. 20

    如何使用errbar绘制多个数据集?

  21. 21

    如何使用函数绘制两个不同的数据集?

  22. 22

    如何使用熊猫绘制年度数据集?

  23. 23

    使用 griddata 绘制数据集而不取消异常值

  24. 24

    如何在 Shiny 中使用 textInput 来命名上传数据框的列

  25. 25

    如何绘制存储在 Pandas DataFrame 中的垂直数据集?

  26. 26

    如何使用闪亮的应用程序绘制(ly)上传数据集的子集?

  27. 27

    使用 lubridate 或 scales 绘制多个数据集

  28. 28

    如何绘制每行一行的整个缩放数据集?

  29. 29

    如何使用 Graphics2d.setPaint() 在 Java 中快速绘制大型数据集

热门标签

归档