r - 如何向闪亮的应用程序添加多个图表?
问题描述
我试图弄清楚如何将多个图表添加到我闪亮的应用程序中。下面是我在主页上的闪亮应用程序的代码。
library(shiny)
library(markdown)
library(DT)
library(ggplot2)
library(dplyr)
library(plotly)
library(shinythemes)
happiness2015 <- read.csv("2015.csv", stringsAsFactors = TRUE)
happiness2016 <- read.csv("2016.csv", stringsAsFactors = TRUE)
happiness2017 <- read.csv("2017.csv", stringsAsFactors = TRUE)
happiness2018 <- read.csv("2018.csv", stringsAsFactors = TRUE)
happiness2019 <- read.csv("2019.csv", stringsAsFactors = TRUE)
countries_all <- read.csv("countries.csv", stringsAsFactors = TRUE)
# Define UI for application that draws a histogram
ui <- navbarPage(
theme = shinytheme("readable"),
title = "World Happiness",
tabPanel("Plot",
sidebarPanel(width = 3,
br(),
span("Data from ",
tags$a("World Happiness Report.", href = "http://worldhappiness.report")),
br(), hr(),
helpText("Select year"),
actionButton("button2015", "2015"),
actionButton("button2016", "2016"),
actionButton("button2017", "2017"),
actionButton("button2018", "2018"),
actionButton("button2019", "2019"),
br(), br(),
helpText("Choose variables"),
uiOutput("variable_1"),
uiOutput("variable_2"),
br(),
helpText("Press command to see multiple countries"),
uiOutput("country"),
br(), hr(),
span("Data source:",
tags$a("Kaggle",
href = "https://www.kaggle.com/unsdsn/world-happiness")),
br(), br(),
em(
span("Code", a(href = "https://github.com/raishamdahya/INFO281", "on GitHub"))
)),
mainPanel(
tabsetPanel(
tabPanel("Plot",
br(),
h2(textOutput("year_name_plot")),
plotlyOutput("scatterplot",
height = 800)
),
tabPanel("Table",
br(),
DT::dataTableOutput("results_table")
),
tabPanel(textOutput("tab_name_rankings"),
h1(textOutput("year_name")),
h2("Top 10"),
wellPanel(
dataTableOutput("rank_table_top")),
br(),
h2("Bottom 10"),
wellPanel(
dataTableOutput("rank_table_bottom"))
)
)
)),
tabPanel("About"))
##############################################
### SERVER STARTS HERE #######################
##############################################
server <- function(input, output, session) {
output$variable_1 <- renderUI({
selectInput("variable_1", "Y-variable:",
choices = c("Happiness.Rank", "Happiness.Score", "Economy",
"Family", "Health", "Freedom", "Government.Corruption",
"Generosity", "Dystopia.Residual"), selected = "Happiness.Score")
})
output$variable_2 <- renderUI({
selectInput("variable_2", "X-variable:",
choices = c("Happiness.Rank", "Happiness.Score", "Economy",
"Family", "Health", "Freedom", "Government.Corruption",
"Generosity", "Dystopia.Residual"), selected = "Economy")
})
data_year <- reactiveValues(data = happiness2015, year = "2015")
observeEvent(input$button2015, {
data_year$data <- happiness2015
year <- "2015"
})
observeEvent(input$button2016, {
data_year$data <- happiness2016
data_year$year <- "2016"
})
observeEvent(input$button2017, {
data_year$data <- happiness2017
data_year$year <- "2017"
})
observeEvent(input$button2018, {
data_year$data <- happiness2018
data_year$year <- "2018"
})
observeEvent(input$button2019, {
data_year$data <- happiness2019
data_year$year <- "2019"
})
filtered_data <- reactive({
data_year$data %>%
filter(Country %in% c(input$country)) %>%
arrange(Country)
})
output$year_name_plot <- renderText({
paste("Data for ", data_year$year)
})
countries <- reactive({
df_small <-
countries_all %>%
select(Country) %>%
droplevels()
c("Select All", levels(df_small$Country))
})
output$country <- renderUI ({
selectInput("country", "Countries:",
multiple = TRUE,
choices = countries(),
selected = "Select All",
selectize = FALSE,
size = 10)
})
observe({
if ("Select All" %in% input$country) {
# choose all the choices _except_ "Select All"
selected_choices <- setdiff(countries(), "Select All")
updateSelectInput(session, "country", selected = selected_choices)
}
})
output$scatterplot <- renderPlotly({
if (is.null(data_year$data)) return()
p <- ggplot(filtered_data()) +
geom_point(aes_string(x = input$variable_2, y = input$variable_1,
colour = "Region", label = "Country"), size = 3) +
ggtitle(paste0(input$variable_1, " vs. ", input$variable_2)) +
theme_bw() +
theme(legend.position = "bottom")
ggplotly(p, tooltip = c("label", "x", "y"), height = 500)
})
output$results_table <- DT::renderDataTable({
if (is.null(data_year$data)) {
return()
} else {
filtered_data()
}
},
options = list(lengthChange = FALSE,
scrollCollapse = TRUE,
scrollX = "100%"),
selection = "single"
)
output$tab_name_rankings <- renderText({
paste("Happiness Ranking: ", data_year$year)
})
output$year_name <- renderText({
paste("Happiness Ranking in ", data_year$year)
})
output$rank_table_top <- DT::renderDataTable({
if (is.null(data_year$data)) {
return()
} else {
data_year$data %>%
mutate(Rank = Happiness.Rank) %>%
arrange(Rank) %>%
top_n(10, desc(Rank))
}
},
options = list(lengthChange = FALSE,
scrollX = "100%")
)
output$rank_table_bottom <- DT::renderDataTable({
if (is.null(data_year$data)) {
return()
} else {
data_year$data %>%
mutate(Rank = Happiness.Rank) %>%
arrange(Rank) %>%
top_n(10, Rank)
}
},
options = list(lengthChange = FALSE,
scrollX = "100%")
)
}
# Run the application
shinyApp(ui = ui, server = server)
我正在尝试将以下情节图添加到页面:
#read files
worklife<-read.csv('satisfaction-with-job-and-work-life-balance-(%)-by-usual-hours-worked,-2018.csv')
wellbeingmeasure<-read.csv('-average-rating-of-selected-wellbeing-measures-for-new-zealanders,-2018_19.csv')
colnames(worklife)
colnames(wellbeingmeasure)
ggplot(worklife, aes(x = Work.life.balance, y = Job.satisfaction)) +
geom_point(aes(color = factor(Usual.hours.worked.in.main.job)))
ggplot(wellbeingmeasure, aes(x = Average.Rating, y = Selected.wellbeing.measures)) + geom_point()
library(plotly)
p1 <- plot_ly(data = worklife, x = ~Work.life.balance, y = ~Job.satisfaction, color = ~Usual.hours.worked.in.main.job)
p1
p2 <- plot_ly(data = wellbeingmeasure, x = ~Average.Rating, y = ~Selected.wellbeing.measures)
p2
对此的任何帮助表示赞赏。如何将上述代码添加到我的闪亮应用程序中?
解决方案
推荐阅读
- python-3.x - 我可以在云函数函数中的python中提供gcloud命令吗
- php - 在同一页面上更新 php session var?
- node.js - 如何使用 Mongoose 获得嵌套文档的计数字段
- groovy - 在 Groovy 中使用 Spock 模拟调用方法
- visual-studio - 仅在第一页上的 RDLC 页脚
- 3d - 有没有办法将 GNUplot 中的 3D 图保存为 3D 对象?
- php - php中的函数可选属性
- php - 在 php wordpress 的 span 标签中显示 switch 语句的输出
- docker - Docker 卷停止同步
- linux - PostgreSQL:无法连接到服务器:域套接字“/var/run/postgresql/.s.PGSQL.5432”