Невозможно построить сложенный барплот с помощью R Shiny - PullRequest
0 голосов
/ 22 января 2019

Я новичок в R Shiny. На самом деле я нарисовал Stacked Barplot, используя ggplot в моем Код R Я хочу нарисовать то же самое, используя блестящие. Ниже мой R код:

ggplot(data = df, aes(x = OutPut, y = Group, fill = Group)) + 
  geom_bar(stat = "identity") + 
  facet_grid(~ Environment)

В моем коде R это дает правильные результаты. Но я пытаюсь нарисовать shiny. Ниже мой блестящий R код.

ui <- fluidPage(theme = shinytheme("lumen"),
                titlePanel("Data Analysis"),
                selectInput("variable", "Variable:", c("OutPut", "Member", "Levels")),
                mainPanel(plotOutput("plot")))

# Define server function
server <- function(input, output){
  x = ggplot(data = df, aes(x = variable.names(), y = Group, fill = Group)) + 
    geom_bar(stat = "identity") + 
    facet_grid(~ Environment)
  plot(x)
}

# Create Shiny object
shinyApp(ui = ui, server = server)

Это выдает ошибку, здесь я создал выпадающий список, где все переменные были сохранены. Поэтому, когда я выбираю одну переменную, она должна построить график Stacked barplot. Может ли кто-нибудь, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 22 января 2019

Как уже упоминалось в комментариях, вам нужно использовать функции рендеринга и фактически назначать их для вывода, чтобы получить нужные вам выводы.

Я считаю, что пример использования графиков в rshiny поможет, так как не имеет смысла иметь его в комментариях, вот оно:

library(shiny)
library(ggplot2)
ui <- fluidPage(titlePanel("Fast Example with mtcars"),
                # inputs
                selectInput("x", "Choose x:", choices = names(mtcars), selected = 'mpg'),
                selectInput("y", "Choose y:", choices = names(mtcars), selected = 'hp'),
                selectInput("fill", "Choose fill:", choices = names(mtcars), selected = 'carb'),

                mainPanel(
                  #outputs
                  h2("Chosen variables are:"),
                  h4(textOutput("vars")),
                  plotOutput("plot")))


server <- function(input, output) {
  df <- mtcars

# here's how you would use the rendering functions 
# notice that I used aes_string   
  output$plot <- renderPlot({
    ggplot(data=df, 
           aes_string(x= input$x, y= input$y, fill=input$fill)) + 
      geom_point()
  })

  output$vars <- renderText(paste0('x: ', input$x, " , ", 
                                   'y: ', input$y, " , ", 
                                   'fill: ', input$fill))

}

shinyApp(ui = ui, server = server)

Учебник по Rshiny очень полезен, вы можете посмотреть его здесь https://shiny.rstudio.com/tutorial/

...