ggplot 没有出现在我的 R 闪亮仪表板上
ggplot does not show up on my R shiny dashboard
我正在努力弄清楚如何使情节具有反应性。我的代码的要点是你 select 与你的团队的单选按钮,其中每个团队都有自己的数据集购买它们都具有相同的变量。我知道我可以将它们全部合并在一起,但我担心这会减慢应用程序本身的速度,而且如果我继续致力于此并添加特定的玩家统计数据,那么我相信我目前的方法是正确的方法。
我可以在闪亮的应用程序之外轻松打印 table,但不能在其中打印。
所以,总的来说,代码可以运行,但情节没有显示出来,我想我看它的时间太长了,可能忽略了一个潜在的简单错误。
我使用的数据集来自NBAsavant.com
(link to 76ers team data)
library(shiny)
library(plotly)
library(tidyverse)
library(rsconnect)
library(readr)
library(ggplot2)
library(dplyr)
library(jpeg)
library(grid)
library(RCurl)
ui <- fluidPage(
titlePanel("NBA 2017-2018 Season: Shooting Analysis"),
fluidRow(
column(2,
radioButtons(inputId = "radio", label = "Select NBA Team",
choices = c("76ers", "Bucks", "Bulls",
"Cavaliers", "Celtics", "Clippers",
"Grizzlies","Hawks","Heat",
"Hornets","Jazz","Kings",
"Knicks","Lakers","Magic",
"Mavericks","Nets","Nuggets",
"Pacers","Pelicans","Pistons",
"Raptors","Rockets","Spurs",
"Suns","Thunder","Timberwolves",
"Trail Blzers","Warriors","Wizards"),
selected = "76ers")
),
fluidRow(10,
box(width = 10,
plotOutput("court_plot")))
)
)
Server <- function(input, output) {
TeamNBA <- reactive({
if (input$radio == "76ers")
SeventySixers
else if (input$radio == "Bucks")
Bucks
else if (input$radio == "Bulls")
Bulls
else if (input$radio == "Cavaliers")
Cavaliers
else if (input$radio == "Celtics")
Celtics
else if (input$radio == "Clippers")
Clippers
else if (input$radio == "Grizzlies")
Grizzlies
else if (input$radio == "Hawks")
Hawks
else if (input$radio == "Heat")
Heat
else if (input$radio == "Hornets")
Hornets
else if (input$radio == "Jazz")
Jazz
else if (input$radio == "Kings")
Kings
else if (input$radio == "Knicks")
Knicks
else if (input$radio == "Lakers")
Lakers
else if (input$radio == "Magic")
Magic
else if (input$radio == "Mavericks")
Mavericks
else if (input$radio == "Nets")
Nets
else if (input$radio == "Nuggets")
Nuggets
else if (input$radio == "Pacers")
Pacers
else if (input$radio == "Pelicans")
Pelicans
else if (input$radio == "Pistons")
Pistons
else if (input$radio == "Raptors")
Raptors
else if (input$radio == "Rockets")
Rockets
else if (input$radio == "Spurs")
Spurs
else if (input$radio == "Suns")
Suns
else if (input$radio == "Thunder")
Thunder
else if (input$radio == "Timberwolves")
Timberwolves
else if (input$radio == "Trail Blazers")
TrailBlazers
else if (input$radio == "Warriors")
Warriors
else if (input$radio == "Wizards")
Wizards
})
output$court_plot <- renderPlot({
courtImg <- "http://robslink.com/SAS/democd54/nba_court_dimensions.jpg"
court <- rasterGrob(readJPEG(getURLContent(courtImg)),
width=unit(1, "npc"), height=unit(1, "npc"))
court_plot <- ggplot(TeamNBA, aes(x=x, y=y)) +
annotation_custom(court, -250, 250, -50, 420) +
geom_hex(bins = 50, alpha = .8) +
scale_fill_continuous(type = "viridis") +
xlim(-250, 250) +
ylim(-50, 420)
print(court_plot)
})
}
shinyApp(ui = ui, server = server)
由于您没有提供数据,我以旧 mtcars
为例。
代码中的问题:
server
/Server
(R区分大小写)
- 反应式数据集必须用括号调用:
TeamNBA()
scale_fill_continuous(type = "viridis")
使用了一个可能不在数据集中的变量(听起来像是来自 iris
数据集),所以我删除了它
- 在
renderPlot
的末尾,不要使用print
- 删除
ui
函数中的box
library(shiny)
library(ggplot2)
library(jpeg)
library(grid)
library(RCurl)
ui <- fluidPage(
titlePanel("NBA 2017-2018 Season: Shooting Analysis"),
fluidRow(
column(2,
radioButtons(inputId = "radio", label = "Select NBA Team",
choices = c("76ers", "Bucks", "Bulls",
"Cavaliers", "Celtics", "Clippers",
"Grizzlies","Hawks","Heat",
"Hornets","Jazz","Kings",
"Knicks","Lakers","Magic",
"Mavericks","Nets","Nuggets",
"Pacers","Pelicans","Pistons",
"Raptors","Rockets","Spurs",
"Suns","Thunder","Timberwolves",
"Trail Blzers","Warriors","Wizards"),
selected = "76ers")
),
fluidRow(10,
plotOutput("court_plot"))
)
)
server <- function(input, output) {
TeamNBA <- reactive({
if (input$radio == "76ers")
mtcars
else if (input$radio == "Bucks")
Bucks
else if (input$radio == "Bulls")
Bulls
else if (input$radio == "Cavaliers")
Cavaliers
else if (input$radio == "Celtics")
Celtics
else if (input$radio == "Clippers")
Clippers
else if (input$radio == "Grizzlies")
Grizzlies
else if (input$radio == "Hawks")
Hawks
else if (input$radio == "Heat")
Heat
else if (input$radio == "Hornets")
Hornets
else if (input$radio == "Jazz")
Jazz
else if (input$radio == "Kings")
Kings
else if (input$radio == "Knicks")
Knicks
else if (input$radio == "Lakers")
Lakers
else if (input$radio == "Magic")
Magic
else if (input$radio == "Mavericks")
Mavericks
else if (input$radio == "Nets")
Nets
else if (input$radio == "Nuggets")
Nuggets
else if (input$radio == "Pacers")
Pacers
else if (input$radio == "Pelicans")
Pelicans
else if (input$radio == "Pistons")
Pistons
else if (input$radio == "Raptors")
Raptors
else if (input$radio == "Rockets")
Rockets
else if (input$radio == "Spurs")
Spurs
else if (input$radio == "Suns")
Suns
else if (input$radio == "Thunder")
Thunder
else if (input$radio == "Timberwolves")
Timberwolves
else if (input$radio == "Trail Blazers")
TrailBlazers
else if (input$radio == "Warriors")
Warriors
else if (input$radio == "Wizards")
Wizards
})
output$court_plot <- renderPlot({
courtImg <- "http://robslink.com/SAS/democd54/nba_court_dimensions.jpg"
court <- rasterGrob(readJPEG(getURLContent(courtImg)),
width=unit(1, "npc"), height=unit(1, "npc"))
court_plot <- ggplot(TeamNBA(), aes(x=mpg, y=wt)) +
annotation_custom(court, -250, 250, -50, 420) +
geom_hex(bins = 50, alpha = .8) +
xlim(-250, 250) +
ylim(-50, 420)
court_plot
})
}
shinyApp(ui = ui, server = server)
注意:我将 aes
更改为与 mtcars
一起使用,您必须对其进行调整
我正在努力弄清楚如何使情节具有反应性。我的代码的要点是你 select 与你的团队的单选按钮,其中每个团队都有自己的数据集购买它们都具有相同的变量。我知道我可以将它们全部合并在一起,但我担心这会减慢应用程序本身的速度,而且如果我继续致力于此并添加特定的玩家统计数据,那么我相信我目前的方法是正确的方法。
我可以在闪亮的应用程序之外轻松打印 table,但不能在其中打印。
所以,总的来说,代码可以运行,但情节没有显示出来,我想我看它的时间太长了,可能忽略了一个潜在的简单错误。
我使用的数据集来自NBAsavant.com (link to 76ers team data)
library(shiny)
library(plotly)
library(tidyverse)
library(rsconnect)
library(readr)
library(ggplot2)
library(dplyr)
library(jpeg)
library(grid)
library(RCurl)
ui <- fluidPage(
titlePanel("NBA 2017-2018 Season: Shooting Analysis"),
fluidRow(
column(2,
radioButtons(inputId = "radio", label = "Select NBA Team",
choices = c("76ers", "Bucks", "Bulls",
"Cavaliers", "Celtics", "Clippers",
"Grizzlies","Hawks","Heat",
"Hornets","Jazz","Kings",
"Knicks","Lakers","Magic",
"Mavericks","Nets","Nuggets",
"Pacers","Pelicans","Pistons",
"Raptors","Rockets","Spurs",
"Suns","Thunder","Timberwolves",
"Trail Blzers","Warriors","Wizards"),
selected = "76ers")
),
fluidRow(10,
box(width = 10,
plotOutput("court_plot")))
)
)
Server <- function(input, output) {
TeamNBA <- reactive({
if (input$radio == "76ers")
SeventySixers
else if (input$radio == "Bucks")
Bucks
else if (input$radio == "Bulls")
Bulls
else if (input$radio == "Cavaliers")
Cavaliers
else if (input$radio == "Celtics")
Celtics
else if (input$radio == "Clippers")
Clippers
else if (input$radio == "Grizzlies")
Grizzlies
else if (input$radio == "Hawks")
Hawks
else if (input$radio == "Heat")
Heat
else if (input$radio == "Hornets")
Hornets
else if (input$radio == "Jazz")
Jazz
else if (input$radio == "Kings")
Kings
else if (input$radio == "Knicks")
Knicks
else if (input$radio == "Lakers")
Lakers
else if (input$radio == "Magic")
Magic
else if (input$radio == "Mavericks")
Mavericks
else if (input$radio == "Nets")
Nets
else if (input$radio == "Nuggets")
Nuggets
else if (input$radio == "Pacers")
Pacers
else if (input$radio == "Pelicans")
Pelicans
else if (input$radio == "Pistons")
Pistons
else if (input$radio == "Raptors")
Raptors
else if (input$radio == "Rockets")
Rockets
else if (input$radio == "Spurs")
Spurs
else if (input$radio == "Suns")
Suns
else if (input$radio == "Thunder")
Thunder
else if (input$radio == "Timberwolves")
Timberwolves
else if (input$radio == "Trail Blazers")
TrailBlazers
else if (input$radio == "Warriors")
Warriors
else if (input$radio == "Wizards")
Wizards
})
output$court_plot <- renderPlot({
courtImg <- "http://robslink.com/SAS/democd54/nba_court_dimensions.jpg"
court <- rasterGrob(readJPEG(getURLContent(courtImg)),
width=unit(1, "npc"), height=unit(1, "npc"))
court_plot <- ggplot(TeamNBA, aes(x=x, y=y)) +
annotation_custom(court, -250, 250, -50, 420) +
geom_hex(bins = 50, alpha = .8) +
scale_fill_continuous(type = "viridis") +
xlim(-250, 250) +
ylim(-50, 420)
print(court_plot)
})
}
shinyApp(ui = ui, server = server)
由于您没有提供数据,我以旧 mtcars
为例。
代码中的问题:
server
/Server
(R区分大小写)- 反应式数据集必须用括号调用:
TeamNBA()
scale_fill_continuous(type = "viridis")
使用了一个可能不在数据集中的变量(听起来像是来自iris
数据集),所以我删除了它- 在
renderPlot
的末尾,不要使用print
- 删除
ui
函数中的box
library(shiny)
library(ggplot2)
library(jpeg)
library(grid)
library(RCurl)
ui <- fluidPage(
titlePanel("NBA 2017-2018 Season: Shooting Analysis"),
fluidRow(
column(2,
radioButtons(inputId = "radio", label = "Select NBA Team",
choices = c("76ers", "Bucks", "Bulls",
"Cavaliers", "Celtics", "Clippers",
"Grizzlies","Hawks","Heat",
"Hornets","Jazz","Kings",
"Knicks","Lakers","Magic",
"Mavericks","Nets","Nuggets",
"Pacers","Pelicans","Pistons",
"Raptors","Rockets","Spurs",
"Suns","Thunder","Timberwolves",
"Trail Blzers","Warriors","Wizards"),
selected = "76ers")
),
fluidRow(10,
plotOutput("court_plot"))
)
)
server <- function(input, output) {
TeamNBA <- reactive({
if (input$radio == "76ers")
mtcars
else if (input$radio == "Bucks")
Bucks
else if (input$radio == "Bulls")
Bulls
else if (input$radio == "Cavaliers")
Cavaliers
else if (input$radio == "Celtics")
Celtics
else if (input$radio == "Clippers")
Clippers
else if (input$radio == "Grizzlies")
Grizzlies
else if (input$radio == "Hawks")
Hawks
else if (input$radio == "Heat")
Heat
else if (input$radio == "Hornets")
Hornets
else if (input$radio == "Jazz")
Jazz
else if (input$radio == "Kings")
Kings
else if (input$radio == "Knicks")
Knicks
else if (input$radio == "Lakers")
Lakers
else if (input$radio == "Magic")
Magic
else if (input$radio == "Mavericks")
Mavericks
else if (input$radio == "Nets")
Nets
else if (input$radio == "Nuggets")
Nuggets
else if (input$radio == "Pacers")
Pacers
else if (input$radio == "Pelicans")
Pelicans
else if (input$radio == "Pistons")
Pistons
else if (input$radio == "Raptors")
Raptors
else if (input$radio == "Rockets")
Rockets
else if (input$radio == "Spurs")
Spurs
else if (input$radio == "Suns")
Suns
else if (input$radio == "Thunder")
Thunder
else if (input$radio == "Timberwolves")
Timberwolves
else if (input$radio == "Trail Blazers")
TrailBlazers
else if (input$radio == "Warriors")
Warriors
else if (input$radio == "Wizards")
Wizards
})
output$court_plot <- renderPlot({
courtImg <- "http://robslink.com/SAS/democd54/nba_court_dimensions.jpg"
court <- rasterGrob(readJPEG(getURLContent(courtImg)),
width=unit(1, "npc"), height=unit(1, "npc"))
court_plot <- ggplot(TeamNBA(), aes(x=mpg, y=wt)) +
annotation_custom(court, -250, 250, -50, 420) +
geom_hex(bins = 50, alpha = .8) +
xlim(-250, 250) +
ylim(-50, 420)
court_plot
})
}
shinyApp(ui = ui, server = server)
注意:我将 aes
更改为与 mtcars
一起使用,您必须对其进行调整