为了研究,我正在研究雷达图的可视化。由于我的研究中要包含各种主题,因此我想使用Shiny制作一个反应式雷达图,"读者"可以从几行值中进行选择,以了解他们希望在雷达图中看到的内容。但是,我无法做到这一点。
我的数据帧如下所示:
Power Alliances National Interest
max 40 40 40
min 0 0 0
lib 4 6 30
left 1 15 10
由于我希望能够在我的反应式闪亮雷达图中在lib和left之间选择作为变量,并且雷达图本身由变量的权力、联盟和国家利益值创建,因此我创建了以下代码:
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或左侧在侧面板中做出反应。我该如何解决这个问题?
提前谢谢你。
您尚未向我们提供radarChart()
函数,所以我不确定,但我猜您想将sliderInput
的值替换为代码中某处的 IDleft_lib
。 为此,您需要在服务器代码中使用input$left_lib
而不是lib_left
。
您可能需要在output$radarPlot
反应开始时添加req(input$left_lib)
,以防止在启动时出现问题,当尚未为input$lib_left
分配值时。
顺便说一下,由于您的代码当前是编写的,因此input$left_lib
的值将是"New_Left_Green"
或"Liberal"
。 如果要在代码中使用"left"
或"lib"
的值,但保留向用户显示的当前文本,则应使用
choices = list("New_Left_Green"="left", "Liberal"="lib")
在sliderInput
的定义中.