Со ссылкой на ваше изображение выше, я изменил ваш код, чтобы получить аналогичное представление.
library(shiny)
library(shinydashboard)
library(ggplot2)
library(dplyr)
library(gapminder)
gm <- gapminder
gm <- transform(gm, pop = as.numeric(pop))
cgm <- gm %>% group_by(continent,year) %>% summarise(totpop = sum(pop),avglifeExp = sum(pop*lifeExp)/totpop,avggdpPercap = sum(pop*gdpPercap)/totpop, numCountries=n())
# This is UI, it has a clean look because we defined body up above.
ui <- dashboardPage(
dashboardHeader(title = "Module 2"),
dashboardSidebar(
helpText("GapMinder Data: Worldwide average life expectancy, population and GPD per Capita 1952-2007")
),
dashboardBody(
# fluidRow(
#
# tabBox(
# title = "Population",
# id = "proj",
tabPanel("Visualization",
fluidRow(
column(4,
plotOutput("ggp")),
column(4,
plotOutput("ggp2")),
column(4,
plotOutput("ggp3"))
)
#tabPanel("GapMinder Data", dataTableOutput("table")),
#tabPanel("Aggregated GapMinder Data", dataTableOutput("table1"))
# )
#
# )
),
fluidRow(sliderInput("slider1", label = h3("Year"), min = 1952,
max = 2007, value = 1952, step = 5, sep = "", width="100%"))
)
)
# This is server function is the same as in the layout practice.
server <- function(input, output, session) {
session$onSessionEnded(stopApp)
# output$tabPanelSelected <- renderText({
# input$proj
#
# })
output$ggp <- renderPlot({
ggplot(data = subset(gm, year = input$Year), aes(x = lifeExp)) + geom_density(alpha = 0.2, fill = "red") + xlab("Life Expectancy")
})
output$ggp2 <- renderPlot({
ggplot(data = subset(cgm,year = input$Year), aes(x = continent, y = totpop, fill = continent)) + geom_bar(stat = "identity")
})
output$ggp3 <- renderPlot({
ggplot(data = subset(cgm,year = input$Year), aes(x = continent, y = avggdpPercap, fill = continent)) + geom_bar(stat = "identity")
# print(p)
# print(q)
# print(r)
})
#output$table <- renderDataTable({gm})
#output$table1 <- renderDataTable({cgm})
}
shinyApp(ui = ui, server = server)
С минимальным знанием блеска я чувствовал, что есть несколько причин, почему вы не получаете никаких заговоров.
- Вы не реализовали
menuItem
полностью. Просто удалив это menuItem
, вы могли видеть, что больше не получаете вышеупомянутую ошибку.
==
является оператором сравнения, а не оператором присваивания. Поэтому замените ==
на =
в ggplot. Теперь вы можете увидеть хотя бы один сюжет.
- Для каждого графика вам нужно определить его отдельно в
UI
, чтобы вы могли
назначьте этот идентификатор позже в server
коде и определите этот график индивидуально.
Я предполагаю, что вы можете улучшить код в соответствии с вашими требованиями. Если вы застряли где-нибудь, где мы здесь, чтобы помочь вам. Удачи.