我真的是R Shiny的新手(今天才开始玩它!),但是这段代码对我不起作用... R一直说"数据必须以 Dataframe 的形式给出。"据我所知,这是一个 Dataframe (当我检查is.data.frame时,它说它是)。
# Load packages ----
library(shiny)
library(fmsb)
# Load data ----
industry <- read.csv("data/industry.csv")
# User interface ----
ui <- fluidPage(
titlePanel("L&D Capabilities 2023"),
sidebarLayout(
sidebarPanel(
helpText("Check which L&D capabilities your industry
has in-house in 2023."),
selectInput("var",
label = "Choose a variable to display",
choices = c("Central government",
"Local government",
"IT and Telecoms",
"Professional services, law and accountancy",
"Finance, banking and insurance",
"Health",
"Social care/housing association",
"Other charity/voluntary sector",
"Retail",
"Engineering",
"Manufacturing",
"Pharmaceutical",
"Transport",
"Utilities",
"Hospitality",
"Education (HE, FE)",
"Art, media and design",
"Other",
"Consulting"),
selected = "Central government"),
),
mainPanel(plotOutput("radarPlot"))
)
)
# Server logic ----
server <- function(input, output) {
output$radarPlot <- renderPlot({
data <- switch(input$var,
"Central government" = industry$Centralgov,
"Local government" = industry$Localgov,
"IT and Telecoms" = industry$IT,
"Professional services, law and accountancy" = industry$PS,
"Finance, banking and insurance" = industry$Finance,
"Health" = industry$Health,
"Social care/housing association" = industry$Social,
"Other charity/voluntary sector" = industry$Charity,
"Retail" = industry$Retail,
"Engineering" = industry$Engineering,
"Manufacturing" = industry$Manufacturing,
"Pharmaceutical" = industry$Pharmaceutical,
"Transport" = industry$Transport,
"Utilities" = industry$Utilities,
"Hospitality" = industry$Hospitality,
"Education (HE, FE)" = industry$Education,
"Consulting" = industry$Consulting,
"Art, media and design" = industry$Art,
"Other" = counties$Other)
radarchart(data)
})
}
# Run app ----
shinyApp(ui, server)
你知道怎么回事吗?或者我错过了什么?
非常感谢!
编辑:这是我的数据
> dput(industry)
structure(list(Max = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Min = c(0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Centralgov = c(0.6,
0.18, 0.27, 0.27, 0.27, 0.27, 0.36, 0.3, 0.55, 0.45, 0.1, 0,
0.1, 0.27, 0.64, 0.09, 0.09, 0.18, 0.27, 0, 0.09, 0.18, 0.25,
0.29, 0.14), Localgov = c(0.36, 0.5, 0.36, 0.5, 0.42, 0.42, 0.09,
0.27, 0.36, 0.55, 0.3, 0.36, 0.55, 0.45, 0.73, 0.36, 0.18, 0.45,
0.64, 0.36, 0.27, 0.18, 0.3, 0.2, 0.6), IT = c(0.73, 0.33, 0.47,
0.51, 0.38, 0.18, 0.34, 0.38, 0.62, 0.41, 0.19, 0.38, 0.49, 0.41,
0.62, 0.32, 0.22, 0.38, 0.58, 0.51, 0.33, 0.34, 0.41, 0.15, 0.37
), PS = c(0.73, 0.4, 0.56, 0.6, 0.48, 0.48, 0.29, 0.24, 0.63,
0.56, 0.29, 0.41, 0.27, 0.36, 0.71, 0.28, 0.16, 0.48, 0.4, 0.52,
0.36, 0.38, 0.29, 0.25, 0.13), Finance = c(0.9, 0.44, 0.66, 0.66,
0.61, 0.52, 0.44, 0.5, 0.86, 0.62, 0.32, 0.39, 0.48, 0.59, 0.86,
0.3, 0.27, 0.5, 0.52, 0.52, 0.57, 0.51, 0.56, 0.33, 0.29), Health = c(0.88,
0.33, 0.47, 0.65, 0.28, 0.37, 0.33, 0.29, 0.78, 0.47, 0.18, 0.13,
0.47, 0.5, 0.78, 0.26, 0.16, 0.41, 0.58, 0.5, 0.38, 0.39, 0.33,
0.13, 0.29), Social = c(0.7, 0.25, 0.5, 0.33, 0.3, 0.2, 0.1,
0.4, 0.5, 0.2, 0, 0.22, 0, 0.2, 0.4, 0.1, 0.3, 0.1, 0.3, 0.3,
0.33, 0.3, 0.33, 0, 0.11), Charity = c(0.8, 0.55, 0.62, 0.44,
0.5, 0.31, 0.08, 0.33, 0.58, 0.5, 0.4, 0.36, 0.33, 0.38, 0.82,
0.15, 0.08, 0.36, 0.22, 0.42, 0.2, 0.42, 0.18, 0.22, 0.11), Retail = c(0.62,
0.38, 0.46, 0.27, 0.25, 0.09, 0.08, 0.31, 0.82, 0.46, 0.25, 0.27,
0.25, 0.54, 0.69, 0.08, 0.17, 0.31, 0.67, 0.5, 0.33, 0.5, 0.38,
0.18, 0.08), Engineering = c(0.6, 0, 0.4, 0.25, 0.17, 0.17, 0,
0, 0.33, 0.5, 0.25, 0.33, 0.6, 0.17, 0.33, 0, 0, 0.33, 0.33,
0.17, 0.17, 0.5, 0.2, 0, 0), Manufacturing = c(0.56, 0.22, 0.35,
0.42, 0.42, 0.4, 0.24, 0.2, 0.56, 0.41, 0.24, 0.11, 0.21, 0.3,
0.63, 0.1, 0, 0.25, 0.42, 0.58, 0.21, 0.35, 0.25, 0.33, 0.06),
Pharmaceutical = c(0.43, 0.25, 0, 0.71, 0.63, 0.25, 0.13,
0.13, 0.63, 0.43, 0, 0, 0, 0, 0.38, 0.25, 0.13, 0.38, 0.38,
0.5, 0, 0, 0.33, 0, 0.17), Transport = c(0.77, 0.62, 0.79,
0.57, 0.71, 0.64, 0.14, 0.5, 0.79, 0.46, 0.38, 0.21, 0.36,
0.38, 0.64, 0.43, 0.29, 0.21, 0.57, 0.64, 0.29, 0.54, 0.57,
0.36, 0.15), Utilities = c(1, 0.6, 0.4, 0.33, 0.2, 0.2, 0.6,
0.6, 0.8, 0.6, 0.25, 0.2, 0.8, 0.4, 1, 0.4, 0.4, 0.6, 0.4,
0.6, 0.2, 0.2, 0.2, 0.2, 0), Hospitality = c(0.67, 0, 0.67,
0.4, 0.67, 0.33, 0.33, 0.83, 0.83, 0.2, 0.67, 0.17, 0.2,
0.33, 0.83, 0.33, 0.33, 0, 0.67, 1, 0.5, 0.33, 0.33, 0.6,
0.33), Education = c(0.87, 0.33, 0.47, 0.53, 0.41, 0.38,
0.5, 0.47, 0.65, 0.41, 0.2, 0.31, 0.47, 0.65, 0.53, 0.24,
0.29, 0.38, 0.56, 0.41, 0.31, 0.19, 0.38, 0.27, 0.35), Consulting = c(0.67,
0.5, 0.67, 1, 0.33, 0.33, 0.17, 0.5, 1, 0.6, 0.33, 0.6, 0.4,
0.67, 0.5, 0.17, 0.17, 0.4, 0.6, 0.5, 0.5, 0.33, 0.4, 0.25,
0.25), Art = c(1, 0.2, 0.6, 0.5, 0.4, 0.2, 0.2, 0.6, 0.6,
0.4, 0.2, 0.2, 0.6, 0.5, 0.5, 0.2, 0.2, 0.2, 0.2, 0.6, 0.4,
0.4, 0.4, 0.2, 0.25), Other = c(0.67, 0.57, 0.71, 0.29, 0.57,
0.43, 0.14, 0.5, 0.67, 0.29, 0.57, 0.29, 0.43, 0.57, 0.71,
0.29, 0.43, 0.29, 0.43, 0.57, 0.71, 0.43, 0.5, 0.6, 0.4)), class = "data.frame", row.names = c("In-person classroom delivery",
"Strategy and governance", "Stakeholder engagement", "Instructional design",
"Crafting learning journeys / blended solutions", "Supporting ongoing workplace performance",
"Facilitating social and collaborative learning", "Understanding learner behaviour",
"Virtual classroom / webinar delivery", "Digital content development",
"Performance consulting", "Business acumen", "Marketing and communications",
"Coaching and mentoring", "Learning management / administration",
"Analytics / data management", "Evaluating impact", "Technology/infrastructure",
"Project management", "Leveraging L&D expertise", "Knowledge management",
"Negotiation, persuasion, and influence", "Learning experience design",
"Community engagement", "Research capabilities"))
1条答案
按热度按时间bxjv4tth1#
正如我在评论中提到的,
radarchart
至少需要三个变量。在这个解决方案中,我将绘图设置为只有在至少有三个选项被选中时才呈现。我将下拉列表的创建更改为允许多个选项(这样就可以选择三个选项)。
然而,这在技术上并不准确,因为第一行应该是最大值,第二行应该是最小值(这是数据框在转置时的方向)。
这是服务器的另一个版本,在这个版本中,我修改了数据,使第一行和第二行是最大值和最小值。
这呈现了与我在第一个版本中所描绘的相同的图(所以我不确定为什么
radarchart
函数调用此信息。)我不知道你对
fmsb::radarchart
有多依恋,但是有很多其他的选择:ggplot2
、plotly
、highcharter
、echarts
等等。这里有一个使用Plotly库的替代方法。在这个选项中,我将
selectInput
中的multiple
设置为false(基于您最初试图绘制的内容)。我设置了范围,以便图形具有可比性。代码的注解中注解了一些其他更改。我隐藏了标签,因为它们重叠了。但是,当你悬停时,你可以看到行名称。