Saya telah menulis fungsi yang berfungsi sempurna dalam skrip sederhana tetapi tidak mengkilap. Fungsi ini membuat histogram.

Jika saya mencoba memplot histogram tanpa Shiny, itu berhasil.

val <- c(2.1490626,3.7928443,2.2035281,1.5927854,3.1399245,2.3967338,3.7915825,4.6691277,3.0727319,2.9230937,2.6239759,3.7664386,4.0160378,1.2500835,4.7648343,0.0000000,5.6740227,2.7510256,3.0709322,2.7998003,4.0809085,2.5178086,5.9713330,2.7779843,3.6724801,4.2648527,3.6841084,2.5597235,3.8477471,2.6587736,2.2742209,4.5862788,6.1989269,4.1167091,3.1769325,4.2404515,5.3627032,4.1576810,4.3387921,1.4024381,0.0000000,4.3999099,3.4381837,4.8269218,2.6308474,5.3481382,4.9549753,4.5389650,1.3002293,2.8648220,2.4015338,2.0962332,2.6774765,3.0581759,2.5786137,5.0539080,3.8545796,4.3429043,4.2233248,2.0434363,4.5980727)
df1 <- data.frame(val)
df1$type <- "Type 1"
val <- c(3.7691229,3.6478055,0.5435826,1.9665861,3.0802654,1.2248374,1.7311236,2.2492826,2.2365337,1.5726119,2.0147144,2.3550348,1.9527204,3.3689502,1.7847986,3.5901329,1.6833872,3.4240479,1.8372175,0.0000000,2.5701453,3.6551315,4.0327091,3.8781182)
df2 <- data.frame(val)
df2$type <- "Type 2"
df3 <- rbind(df1, df2)
bins = 10
min = NULL
max = NULL

histogram_function <- function(data, bins, min, max){
  hist <- ggplot(data, aes(val, fill=type)) +
    geom_histogram(position = "identity", colour = "grey40", bins = bins) +
    ggtitle("Here must be a title") +
    xlab("Values") +
    ylab("Frequency") +
    facet_grid(type ~ .)  
  return(hist)
}

histogram_function(data=df3, bins=bins, min=min, max=max)

image1

Namun, jika saya mencoba melakukan hal yang sama di Shiny, saya tidak bisa mendapatkan histogram apa pun.

Perhatikan bahwa saya telah menyimpan data ke dalam fungsi reaktif karena di aplikasi mengkilap asli saya, saya memuat file yang memiliki lebih banyak informasi (tetapi dengan format yang sama dengan di sini)

Kode saya di Shiny.

library(shiny)
library(ggplot2)

histogram_function <- function(data, bins, min, max){
  hist <- ggplot(data, aes(val, fill=type)) +
    geom_histogram(position = "identity", colour = "grey40", bins = bins) +
    ggtitle("Here must be a title") +
    xlab("Values") +
    ylab("Frequency") +
    facet_grid(type ~ .)  
  return(hist)
}

ui <- fluidPage(
  
  # Application title
  titlePanel("My shiny app"),
  
  sidebarLayout(
  
    mainPanel(
      plotOutput("histogram")
    )
  )
)

server <- function(input, output) {
  
  dataframe <- reactive({
    val <- c(2.1490626,3.7928443,2.2035281,1.5927854,3.1399245,2.3967338,3.7915825,4.6691277,3.0727319,2.9230937,2.6239759,3.7664386,4.0160378,1.2500835,4.7648343,0.0000000,5.6740227,2.7510256,3.0709322,2.7998003,4.0809085,2.5178086,5.9713330,2.7779843,3.6724801,4.2648527,3.6841084,2.5597235,3.8477471,2.6587736,2.2742209,4.5862788,6.1989269,4.1167091,3.1769325,4.2404515,5.3627032,4.1576810,4.3387921,1.4024381,0.0000000,4.3999099,3.4381837,4.8269218,2.6308474,5.3481382,4.9549753,4.5389650,1.3002293,2.8648220,2.4015338,2.0962332,2.6774765,3.0581759,2.5786137,5.0539080,3.8545796,4.3429043,4.2233248,2.0434363,4.5980727)
    df1 <- data.frame(val)
    df1$type <- "Type 1"
    val <- c(3.7691229,3.6478055,0.5435826,1.9665861,3.0802654,1.2248374,1.7311236,2.2492826,2.2365337,1.5726119,2.0147144,2.3550348,1.9527204,3.3689502,1.7847986,3.5901329,1.6833872,3.4240479,1.8372175,0.0000000,2.5701453,3.6551315,4.0327091,3.8781182)
    df2 <- data.frame(val)
    df2$type <- "Type 2"
    df3 <- rbind(df1, df2)
    return(df3)
  })
  
  draw_histogram <- reactive({
    hist <- histogram_function(data = dataframe(), bins = 10, min = NULL, max = NULL)
    return(hist)
  })
  
  output$histogram <- renderPlot({
    h <- draw_histogram()
    return(h)
  })
}

#Run the app
 shinyApp(ui = ui, server = server)

Apakah saya melakukan sesuatu yang salah di Shiny? Saya tidak tahu apa yang sedang terjadi.

Terima kasih sebelumnya,

Salam

0
Eva 12 Mei 2021, 16:50

1 menjawab

Jawaban Terbaik

Anda menggunakan sidebarLayout di mana Anda perlu mendefinisikan sidebarPanel dan mainPanel. Dalam contoh Anda, Anda tidak mendefinisikan sidebarPanel yang mengarah ke kesalahan. Anda dapat menggunakan sidebarPanel kosong atau cukup gunakan fluidPage

Ubah ui, lalu berfungsi:

ui <- fluidPage(
  
  # Application title
  titlePanel("My shiny app"),
  
  sidebarLayout(
    sidebarPanel(),
    mainPanel(
      plotOutput("histogram")
    )
  )
)
1
starja 12 Mei 2021, 14:03