#r #shiny
Вопрос:
Поэтому мне было трудно получить условный флажок, чтобы создать график ggplot. Мне просто интересно, что я делаю не так в server.R
файле?
Кажется, я не могу создать этот график ggplot, используя набор данных msleep: ggplot(newData, aes(x = bodywt, y = sleep_total, color= conservation, alpha=sleep_rem)) geom_point()
.
ui.R:
shinyUI(fluidPage(
# Application title
titlePanel(uiOutput("title_panel")),
# Sidebar with options for the data set
sidebarLayout(
sidebarPanel(
selectizeInput("vore", "Vore", selected = "omni", choices = levels(as.factor(msleep$vore))),
br(),
sliderInput("size", "Size of Points",
min = 1, max = 10, value = 5, step = 1),
checkboxInput("conservation", h4("Color Code Conservation Status", style = "color:green;")),
conditionalPanel(
condition = "input.conservation==true",
checkboxInput("symbol", p("Also change symbol based off of REM sleep?", style = "color:black;"))
)
),
# Show outputs
mainPanel(
plotOutput("sPlot"),
)
)
))
сервер.R:
library(shiny)
library(dplyr)
library(ggplot2)
shinyServer(function(input, output, session) {
get.data <- reactive({
new.data <- msleep %>% filter(vore == input$vore)
})
output$sPlot <- renderPlot({
new.data <- get.data()
g <- ggplot(new.data, aes(x = bodywt, y = sleep_total))
if(input$conservation){
g geom_point(size = input$size, aes(col = conservation))
} else if(input$symbol){#Currently I can't seem to produce this ggplot below
ggplot(newData, aes(x = bodywt, y = sleep_total, color= conservation, alpha=sleep_rem)) geom_point()
} else {
g geom_point(size = input$size)
}
})
})
Мы будем очень признательны за любую помощь.
Комментарии:
1. Ваш
ggplot(newData, aes(x = bodywt, y = sleep_total, color= conservation, alpha=sleep_rem))
не включает в себя никаких геом. Как именно вы хотите отобразить эти данные? Вы хотите использовать очки? Если да, добавьтеgeom_poin()
в конце.2. Привет, @MrFlick. Да, я хотел использовать очки. Однако, несмотря на то , что я добавляю
geom_point
, я все еще не вижу данных, которые хочу отобразить.3. Этот пример кажется неполным. Существует код, который просматривается
input$vore
иinput$size
которого нет в пользовательском интерфейсе4. Привет @MrFlick, только что добавил
input$vore
иinput$size
в пользовательский интерфейс.
Ответ №1:
Ваша логика была неверной. Вы отображаете только второй флажок, если установлен первый флажок (TRUE). В этом случае логика должна следовать той же самой. Попробуй это…
server <- shinyServer(function(input, output, session) {
get.data <- reactive({
new.data <- msleep %>% filter(vore == input$vore)
})
output$sPlot <- renderPlot({
new.data <- get.data()
g <- ggplot(new.data, aes(x = bodywt, y = sleep_total))
if(input$conservation){
if(input$symbol){
g <- g geom_point(aes(color= conservation, alpha=sleep_rem, size = input$size))
}else g <- g geom_point(size = input$size, aes(col = conservation))
} else {
g <- g geom_point(size = input$size)
}
g
})
})