#r #ggplot2 #shiny #pie-chart
#r #ggplot2 #блестящий #круговая диаграмма
Вопрос:
Я создаю блестящее приложение, которое помогает пользователю самостоятельно создавать круговые диаграммы с помощью ggplot2. Следовательно, у него будет селекторный ввод, позволяющий пользователю выбирать переменные из разных фреймов данных. Я застрял с input$
утверждениями, казалось, что Shiny взял символ input$
в двойных кавычках в качестве символа, а не переменной. Ниже приведена упрощенная версия кода, пожалуйста, дайте мне знать, как это исправить. Заранее спасибо!
library(ggplot2)
server <- function(input, output) {
output$var_selector <- renderUI({
selectInput('var_selector', 'Please select:', choices = names(mtcars))
})
output$pie_plot <- renderPlot({
ggplot(mtcars, aes(x = factor(1), fill = factor(input$var_selector))) geom_bar(width = 1) coord_polar(theta = "y")
})
output$text <- renderText({
print(input$var_selector)
})
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
h3('ggplot2 pie chart'),
uiOutput('var_selector')
),
mainPanel(
plotOutput('pie_plot')
)
)
)
shinyApp(ui = ui, server = server)
Комментарии:
1. Вы проверили
choices = names(mtcars)
, работает ли так, как ожидалось? Обычноchoices
ожидается именованный список.2. И затем, если это работает так, как ожидалось, значение
input$var_selector
равно chr . Так что это в кавычках.ggplot::aes
ожидаются переменные без кавычек. Итак, вы должны использоватьaes_string
здесь.3. Привет @mRcSchwering, выбор работает так, как ожидалось. Я переключился
aes
наaes_string
, но он все еще не работает.4. О, из
factor
-за, вероятно. Вернитесь кaes
и просто используйтеmtcars[[input$var_selector]]
вместоinput$var_selector
5. Спасибо, это сработало!