R Shiny app:显示多个级别

时间:2016-02-04 11:10:02

标签: r ggplot2 shiny

我正在构建一个闪亮的应用程序,可以比较足球(我们的美国朋友的足球)球员的各种统计数据(传球,投篮,进球等)。

在应用程序中,可以选择一个或多个玩家,看看他们在统计数据上的表现如何。然而,在我的应用程序中,选择玩家在创建情节时效果不佳。有时它有效,大多数时候它显示空图。如果没有选择任何一个玩家,那么它对一个玩家来说效果很好。当选择超过1个玩家时,事情在各种场合都会崩溃。谁知道什么了?谢谢!

ui.R

library(shiny)
library(ggplot2)

dataset <- data.frame(player=c("Joel", "Marty", "Tinus", "Jelle","Gio","Tom",
                              "Tim","Peter","Marco", "Martin"), 
                  pass=c(1,10,30,50,80,200,250,300,500,2000),
                  goals=c(12,10,8,1,3,5,9,7,2,17))

fluidPage(

  titlePanel("Player"),

  sidebarPanel(


    selectInput('y', 'Y', names(dataset), names(dataset)[[3]]),
    selectInput('z','Player', levels(dataset$player), multiple=TRUE)
),

  mainPanel(
    plotOutput('plot')
  )
)

server.R

library(shiny)
library(ggplot2)
library(dplyr)


function(input, output) {
  dataset<-data.frame(player=c("Joel", "Marty", "Tinus", "Jelle", "Gio","Tom",
                               "Tim","Peter","Marco", "Martin"), 
                  pass=c(1,10,30,50,80,200,250,300,500,2000),
                  goals=c(12,10,8,1,3,5,9,7,2,17))


  dataset1<-reactive({
    y<-input$y
data<-dataset 

if (!is.null(input$z) && input$z != "") {
  data <- filter(data, player == input$z)
} 
data
  })

  output$plot <- renderPlot({

   ggplot(dataset1(), aes_string(x=dataset1()$player, y=input$y))+
   geom_bar(stat="identity")

  }, height=700) 
}

1 个答案:

答案 0 :(得分:0)

您的代码中有两个错误:

1)player == input$z length(input$z)>1您需要使用%in% data <- filter(data, player %in% input$z)x=dataset1()$player

2)aes_string在您需要的x="player" #include <ext/stdio_filebuf.h> ... __gnu_cxx::stdio_filebuf<char> fb(fp, std::ios::out); std::ostream os(&fb); 打印奇怪的内容 CLLocation *skLocation = [[CLLocation alloc] initWithLatitude:positionService.currentCoordinate.latitude longitude:positionService.currentCoordinate.longitude]; CLLocationDistance distance = [currentLocation distanceFromLocation:skLocation];