Проблемы с отображением приборной панели / макет / сюжет / реактивный / пользовательский интерфейс

enter image description hereI Я пытаюсь сделать панель управления блестящей с 3 страницами (таблица, продажи, прогноз), пока только первая - таблица данных показывает.

На вкладке продаж отображаются все кнопки, но график не отображается. То же самое и со вкладкой прогноза. Кроме того, как я могу настроить его, чтобы все кнопки были единообразно слева, а за ними - график?

Мой подход правильный? Или я должен использовать условную панель? Не могу понять, что здесь не так. Я хотел бы пока сделать все 3 вкладки адаптивными с соответствующими графиками. Любая помощь будет оценена по достоинству. Спасибо

   wmp <- read.csv("ABC.csv",stringsAsFactors = FALSE)

Базовый макет пользовательского интерфейса

     ui <- dashboardPage(skin=c("blue"),
    dashboardHeader(title = "Layout"),
     dashboardSidebar(id="",
                   sidebarMenu(menuItem("Data Table", tabName = "Data_Table", icon = icon("table")),
                              menuItem("Sales Performance", tabName = "Sales_Performance",icon = icon("bar-chart-o")),
                              menuItem("Forecast",tabName = "Fore_Cast",icon = icon("bolt"))
                              )
                   ),
  #Main Body
  dashboardBody(tabItems(
                tabItem(tabName = "Data_Table",
                        box(title = "Data Table ",width=50,
                        column(2,
                       selectInput("PInput","Product:",c("All",unique(wmp$Product)))),
                        column(2,
                        selectInput("CInput","Category:",c("All",unique(wmp$Category)))),
                        column(4,
                        selectizeInput("PSCInput","Product Sub Category:",c("All",unique(wmp$sub.category))))), DT::dataTableOutput("table")),
                tabItem(tabName = "Sales_Performance",
                        sidebarMenu(fluidRow(title= "Sales Breakdown",width = 500,
                        column(4,    
                        sliderInput("monthInput","Month",min=1,max = 12,step = 1,c(25,45)),br()),
                        column(4,
                        selectizeInput("weekInput","Week",choices=unique(wmp$week),br())),
                        column(7,
                        selectizeInput("wdayInput","Week day",choices=unique(wmp$wday))),
                        column(4,
                        checkboxGroupInput("yearInput","Year",choices = unique(wmp$year))))),plotOutput("plot1")
                        #br(),br(),
                #tableOutput("Results")
                ),
                tabItem(tabName = "Fore_cast",width=400,
                        #UI buttons/options to be added later,
                        title="Plot2",plotOutput("plot2"))
                      )))

Реактивная часть сервера

server <- function(input,output) {
   #For Data table
       output$table <- DT::renderDataTable(DT::datatable({
data1 <- wmp
if (input$PInput != "All") {
  data <- data1[data1$Product == input$PInput,] }
if (input$CInput != "All") {
  data <- data1[data1$Category == input$CInput,] }
if (input$PSCInput != "All") {
  data1 <- data1[data1$sub.category == input$PSCInput,] }
data1
}))
   #For interactive plot
    filtered <- reactive({ 
      if (is.null(input$yearInput)) {
      return(NULL)
      }    
    wmp %>%  filter(
    year == input$yearInput,
    week == input$weekInput,
  wday == input$wdayInput,
  month >= input$monthInput[1],
  month <= input$monthInput[2]
)})

    output$plot1 <- renderPlot({

wmp2 <- data.frame(filtered())
avg <- mean((wmp2$Amount))


  plotwmp2 <- ggplot(filtered(),aes(Date,Amount,group=filtered()$year,color=filtered()$year)) + scale_x_date() + geom_point() + geom_line() + xlab("Yearly Span") + theme_grey() + ggtitle("Weekly breakdown") + geom_hline(yintercept=avg,linetype="dashed", color = "red")


plotwmp2
})


   #For Time series, sample plot.
   output$plot2 <- renderPlot({ 

plot.ts(wmp$Amount)})}


   #Final App
   shinyApp(ui=ui, server=server)
0
0
193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите, чтобы кнопки располагались слева, а график - справа, я думаю, вам следует разделить свою страницу на две части. Что-то вроде этого:

tabItem(tabName = "Sales_Performance",
        fluidRow(title= "Sales Breakdown",width = 500,
           column(4,    
                  sliderInput("monthInput","Month",min=1,max = 12,step = 1,c(25,45)),
                  br(),
                  selectizeInput("weekInput","Week",choices=unique(wmp$week)),
                  br(),
                  selectizeInput("wdayInput","Week day",choices=unique(wmp$wday)),
                  br(),
                  checkboxGroupInput("yearInput","Year",choices = unique(wmp$year))
            ),
           column(8,
                  plotOutput("plot1")
           )
        )
)

Также вы можете поместить его в коробки.

Проблему с графиками будет легче понять и исправить, если вы предоставите образец данных. Насколько я могу судить, проблем с plot2 быть не должно. В конце кода plot1 "plotwmp2" прямо перед закрывающими скобками "})" есть дополнительные символы.

UPD. Plot2 не отображается, потому что у вас разные теги в menuItem и tabItem - «Fore_Cast» и «Fore_cast» соответственно.

О сюжете 1. Когда я запускаю приложение, я вижу следующее: «Ошибка: объект« Дата »не найден», поэтому я посмотрел на вывод кода $ plot1. Вы используете это: aes (Дата, Сумма, группа = отфильтровано () $ год, цвет = отфильтровано () $ год) Я исправил его на filter () $ Date, filter () $ Amount и появился график. Но только если расстанутся

scale_x_date()

комментируется. Если я использую «scale_x_date ()», возникает ошибка: Неверный ввод: date_trans работает только с объектами класса Date. Возможно, вам стоит преобразовать этот столбец методом mutate.

Я попробовал, и теперь вкладка "Продажи" выглядит намного лучше. Кнопки слева, а график сбоку. Но я не могу найти лишние символы в ggplot для строки plotwmp2 :( Пожалуйста, взгляните на образец данных, который я сейчас прилагаю, и дайте мне знать. Есть ли у вас какие-либо другие данные относительно третьей вкладки, plot2?

9minus4 11.04.2018 14:18

@ 9minus4, я обновил свой ответ. Я запускаю этот скрипт, и он работает нормально, за исключением метода scale_x_date ().

Olga Semenkina 11.04.2018 15:21

Я вижу, где я здесь ошибся ^^ Спасибо, что обновили свой ответ. Я внес необходимые изменения, и теперь все они работают! ** Но с plotwmp2 я получаю новую ошибку: «Предупреждение: ошибка в match.arg: 'arg' должен быть NULL или вектором символов» 124: match.arg 123: filter 121: withVisible 120: freduce 118: eval 117: eval 116: withVisible 115:%>% 114: <реактивный: фильтрованный> [# 18] 103: фильтрованный 102: renderPlot [# 28] 92: <реактивный: plotObj> 81: plotObj 80: origRenderFunc 79: output $ plot1

9minus4 12.04.2018 07:27

Нашел решение ошибки match.arg, она исчезла после преобразования столбца даты. Это не было в формате «Дата». Спасибо за ваш вклад! @Olga: D

9minus4 12.04.2018 08:12

Другие вопросы по теме