Хобрук: Ваш путь к мастерству в программировании

ggvis + layer_bars + заливка

Это проблема с ggvis, fill и layer_bars. Я пытаюсь запустить следующий код, и он не работает. Замена моих данных на Iris, похоже, решает эту проблему, но я не могу понять, почему. Я также пытался, как предлагалось в некоторых постах, добавить group_by .. но лучше не стало. Любое предложение будет приветствоваться!

Ошибка, которую я получаю:

ERROR : object 'coul' not found

Вот код:

for (package in c('dtplyr', 'shiny', 'shinydashboard', 'ggvis')) {
  if (!require(package, character.only=T, quietly=T)) {
    tryCatch({
      install.packages(package)
      library(package, character.only = TRUE)}
      , error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
  }    
}
tbl.consommation <- structure(list(nom = c("A", "B", 
                                 "C", "D", "E", "F", "G", "H", 
                                 "I", "J", "K", "L", "M", "N", 
                                 "O", "P", "Q", "R", "S", 
                                 "T", "U"), 
                               pourcentage_consomme = c(0.8, 0.5, 
                                                            0.2, 0.1, 1.9, 0.3, 
                                                            0.2, 0.01, 0.1, 0.51, 
                                                            0.45, 0.5, 0.95, 0.13, 
                                                            0.66, 0.46, 0.42, 0.42, 
                                                            0.32, 0.5, 1.1), 
                               coul = c("#0000FF", "#FF0000", "#E2001C", 
                                        "#71008D", "#1C00E2", "#3800C6", "#FF0000", "#1C00E2", "#0000FF", 
                                        "#71008D", "#3800C6", "#0000FF", "#E2001C", "#0000FF", "#0000FF", 
                                        "#5500AA", "#5500AA", "#5500AA", "#3800C6", "#0000FF", "#0000FF"
                                        )), 
                          .Names = c("nom",  "pourcentage_consomme", "coul"), row.names = c(NA, -21L
                                      ), class = c("data.table", "data.frame"),  sorted = "nom")
ui <- dashboardPage(
  title="Test ggvis",
  dashboardHeader(),
  dashboardSidebar(
    sidebarMenu(
      menuItem("Graphique", tabName = "Graph", icon = icon("signal"))
)
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName = "Graph",
          ggvisOutput("graphConso")
      )
    )

  )
)
server <- function(input, output) {
  tryCatch({
  graphConso <- 
    tbl.consommation %>% 
  ggvis(x = ~nom, y = ~pourcentage_consomme, fill =  ~coul) %>%
  layer_bars(width = 0.5) 
  graphConso %>% bind_shiny("graphConso")
}   , error=function(e){cat("ERROR :",conditionMessage(e), "\n")})

}
shinyApp(ui = ui, server = server)
20.08.2019

Ответы:


1

Проблема вызвана конструкцией tbl.consommation. Очевидно, библиотека dtplyr не обрабатывает создание data.frame через функцию structure.

Итак, чтобы ваше приложение заработало, вам нужно «преобразовать» tbl.consommation в data.frame с помощью функции as.data.frame(...).

20.08.2019
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..