Как исправить ggplotly рендеринга из pickerInput и других входных данных в блестящий? - PullRequest
0 голосов
/ 07 февраля 2019

Мой сюжет полностью ложен, когда я запустил свой shinyapp.Я выбрал все переменные "страна" с помощью pickerInput ShinyWidget, и он должен был создать сложенный график geom_col со всей страной на оси X, значением доступной переменной (на основе выбранных "Год" и "Запись"") по оси Y.Но в результате получается, что в списке стран не хватает 90%, а «Записи» не складываются, а генерируются отдельно и не все.Каждый раз, когда я изменяю переменную, я получаю сообщение об ошибке:

Предупреждение в ==.default (страна, ввод $ страна): длинная длина объекта не кратна короткой длине объекта Предупреждение в is.na (e1)|is.na (e2): длинная длина объекта не кратна короткой длине объекта

Раньше я плавил набор данных и тоже получал это:

Предупреждение: атрибуты не одинаковы по мере измеренияпеременные;они будут отброшены

Мне нужна помощь с ошибками, которые я получаю, особенно в моем коде

library(shiny)    
library(shinydashboard)     
library(ggplot2)
library(dplyr)
library(plotly)
library(DT)
library(shinythemes)
library(shinyWidgets)
library(gganimate)
library(reshape2)

NFA <- read.csv("NFA 2018 Edition.csv")
NFA$year <- as.factor(NFA$year)
levels(NFA$record)

levels(NFA$record)[levels(NFA$record) == "BiocapPerCap"] <- "Biocapacity (gha per person)"
levels(NFA$record)[levels(NFA$record) == "BiocapTotGHA"] <- "Biocapacity (gha)"
levels(NFA$record)[levels(NFA$record) == "EFConsPerCap"] <- "Ecological Footprint (gha per person)"
levels(NFA$record)[levels(NFA$record) == "EFConsTotGHA"] <- "Ecological Footprint (gha)"

уровни (запись NFA $)

NFA <- NFA %>% 
  select(country,year, record, crop_land,grazing_land,forest_land,fishing_ground,built_up_land,carbon)

NFA <- melt(data = NFA, id = c("country","year","record"))

уровни (Переменные NFA $) (запись NFA $)

Определить пользовательский интерфейс для приложения

ui <- fluidPage(

  titlePanel(title = "Global Footprint Network: Comparing Countries"),

  hr(),

 fluidRow(

  #FirstInput
 column(width = 6,
        pickerInput(
    inputId = "country",
    label = "Select Country or Region:",
    choices = levels(NFA$country),
    options = list('actions-box' = TRUE),
    multiple = TRUE,
    selected = levels(NFA$country),
    width = "100%"
  )
  ),

  #SecondInput
  column(width = 6,
         selectInput(
    inputId = "year",
    label = "Select Year:",
    choices = levels(NFA$year),
    selected = 2013,
    width = "120%"
  )
  )
 ),

 fluidRow(
      #ThirdInput
   tags$style(HTML(".radio-inline {margin-right: 23px;}")),
     column(width = 12,
            radioButtons(
    inputId = "type",
    label = "Select Type:",
    choices = c("Biocapacity (gha per person)",         
                "Biocapacity (gha)",                    
                "Ecological Footprint (gha per person)",
                "Ecological Footprint (gha)"),
    selected = "Ecological Footprint (gha per person)",
    inline = T
  )
 )



    ),


fluidRow(

  column(width = 12,
  tabsetPanel(

  tabPanel(
    "Plot",
    plotlyOutput(outputId = "NFAplot")
  ),

  tabPanel(
    "Data Table",
  dataTableOutput(
    outputId = "nfadata"),
  style = 'overflow-x : scroll, overflow-y : scroll'

  )
  )
)
)

  )

Определить логику сервера

server <- function(input, output, session) {

  output$NFAplot <- renderPlotly({

NFAep <- NFA %>% 
  filter(record == input$type,
         year == input$year,
         country == input$country) %>% 
  ggplot(aes(x = country,y = value)) +
  geom_col(aes(fill = variable), position = "stack")

ggplotly(NFAep)
  })


model.data <- reactive({
  subset(NFA, record %in% input$type & year %in% input$year & country %in% input$country)
})

output$nfadata <- renderDataTable({model.data()})


}

Запустить приложение

shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 13 марта 2019

Я не могу воспроизвести ваши ошибки, потому что у меня нет данных.Можете ли вы воспроизвести данные

NFA 2018 Edition.csv ?

Что если вы попробуете %in% вместо == в:

filter(record == input$type,
         year == input$year,
         country == input$country)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...