Как сделать реактивную радарную диаграмму в Shiny - PullRequest
0 голосов
/ 25 мая 2020

Для исследования я работаю над визуализацией радарных диаграмм. Поскольку у меня есть различные темы для включения в мое исследование, я хочу иметь реактивную радарную диаграмму с использованием Shiny, где «читатели» могут выбирать из нескольких строк значений того, что они хотят видеть на радарной диаграмме. Однако мне это не удается.

Мой фрейм данных выглядит следующим образом:

       Power      Alliances     National Interest
max     40           40             40
min      0            0              0
lib      4            6             30
left     1           15             10

Поскольку я хочу иметь возможность выбирать между lib и left в качестве переменных в моем реактивном Блестящая радарная диаграмма, и сама радарная диаграмма создается с помощью значений переменных Power , Alliance и National Interest , я создал следующий код:

ui <- shinyUI(fluidPage(

  # Application title
  titlePanel("Political Parties"),

  sidebarPanel(
    selectInput(
      inputId = "left_lib",
      label = "Argument_Type",
      choices = list("New_Left_Green"="left", "Liberal"="lib")
    )
  ),
  fluidRow(column(12,plotOutput("radarPlot"))
  )))

server <- shinyServer(function(input, output) {
  output$radarPlot <- renderPlot({

    req(input$left_lib)
    radarchart(input$left_lib,
               seg=6,
              title = "New Left / Green versus Liberal in The Netherlands",
              pcol=colors_line,
              plwd=2)
    legend(x=1.6,
           y=1.35,
           legend = rownames(left_lib[-c(1,2),]),
           bty = "n", pch=20, col=colors_line, cex=1.2, pt.cex = 3)
})})

shinyApp(ui = ui, server = server)

Радар-диаграмма создана, однако она не реагирует на выбор lib или left на боковой панели. Как мне решить эту проблему?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

Вы не предоставили нам свою функцию radarChart(), поэтому я не могу быть уверен, но я предполагаю, что вы хотите заменить значение sliderInput идентификатором left_lib где-нибудь в своем коде . Для этого вам нужно использовать input$left_lib вместо lib_left в коде вашего сервера.

Возможно, вам потребуется добавить req(input$left_lib) в начале вашего output$radarPlot реактивного кода, чтобы предотвратить проблемы при запуске , когда input$lib_left не было присвоено значение.

Между прочим, поскольку ваш код в настоящее время записан, значение input$left_lib будет либо "New_Left_Green", либо "Liberal". Если вы хотите использовать значения "left" или "lib" в своем коде, но сохранить текущий текст, отображаемый для вашего пользователя, вы должны использовать

choices = list("New_Left_Green"="left", "Liberal"="lib")

в определении sliderInput.

...