以下是我的代码,我无法通过Shiny来显示图表中的数据。它只显示列名,而不是数据。有什么建议吗?
数据只是在图表中连续显示,而不是正确绘制。我试过通过R Shiny备忘单中的例子,但没有运气。
budget_d <- tribble(~opdate, ~r.pd.bdgt, ~r.pt.bdgt, ~r.au.bdgt,
ymd("2018-05-31"), 81, 73, 65,
ymd("2018-06-11"), 86, 79, 69,
ymd("2018-06-30"), 89, 76, 67,
ymd("2018-07-21"), 82, 72, 65,
ymd("2018-08-01"), 81, 73, 63,
ymd("2018-08-08"), 83, 75, 67,
ymd("2018-11-17"), 84, 74, 66)
require(shiny)
require(tidyverse)
require(lubridate)
ui <- fluidPage(
dateRangeInput(
inputId = "period",
label = "Choose a Period",
start = ymd("2018-04-01"),
end = ymd("2018-09-01"),
min = ymd("2018-01-01"),
max = ymd("2018-12-31")
),
selectInput(
inputId = "elements",
label = "Select an Element",
choices = c("Pd Recovery" = "r.pd.bdgt",
"Pt Recovery" = "r.pt.bdgt",
"Au Recovery" = "r.au.bdgt")
),
plotOutput(
outputId = "hist"
)
)
server <- function(input, output){
output$hist <- renderPlot({
ggplot(budget_d, aes(opdate, input$elements)) +
geom_point() +
xlim(input$period)
})
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
见here。 input$elements
是可变的,如果您想使用变量,则应使用aes_string
而不是aes
。示例数据的工作示例:
require(shiny)
require(tidyverse)
require(lubridate)
library(ggplot2)
ui <- fluidPage(
selectInput(
inputId = "elements",
label = "Select an Element",
choices = colnames(iris)
),
plotOutput(
outputId = "hist"
)
)
server <- function(input, output){
output$hist <- renderPlot({
# This works.
ggplot(iris, aes_string("Sepal.Length", input$elements)) +
geom_point()
# This does not work.
# ggplot(iris, aes(Sepal.Length, input$elements)) +
# geom_point()
})
}
shinyApp(ui,server)
希望这有帮助!