*编辑 道歉 - 好的,将编辑此而不是从现在开始添加。
因此;谢谢你的建议,但他们只是没有为我工作。结果,我完全回归基础。从闪亮的帮助网站(第5节,第2回答)中取出原始脚本,然后简单地粘贴我周围的东西:
# server.R
setwd("C:/Users/Me/Desktop/Shapefiles/ITV Region (Working) - Shiny App/")
require(maptools)
require(ggplot2)
require(RColorBrewer)
require (ggmap)
require (scales)
require (dplyr)
source("C:/Users/Me/Desktop/Shapefiles/poly_coords.r")
## load the shapefile
Shpfile <- readShapePoly("shpfiles/ITVRegion.shp")
names(Shpfile)
names(Shpfile)<- c("ID", "NAME", "Shape_Length", "Shape_Area")
Shpfile_geom <- poly_coords(Shpfile)
mapdata <- read.table("data/ITVRegionKeyedData_Test.csv", header = TRUE, sep=",")
Plotdata <- left_join(Shpfile_geom, mapdata)
print("Build has run successfully")
shinyServer(
function(input, output) {output$map <- renderPlot({
ggplot()+
geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = input$metric), color = "black", size = 0.25) +
coord_map() ## This maintains shape and avoids distortion
})
}
)
没什么特别的。没有转换。没有单独的反应实例。 我收到错误报告:未找到对象'输入'
如果我用简单的家庭(没有引号)切换输入$ metric,那么地图会在数据中呈现我的家庭列。我只需要将从我的UI中选择的度量列放入geom_polygon块。
也许只是我不理解数据类型,我需要将UI中的文本转换为字段标题?
# ui.R
shinyUI(fluidPage(
titlePanel("censusVis"),
sidebarLayout(
sidebarPanel(
helpText("ITV"),
selectInput("metric",
label = "Choose a variable to display",
choices = c("Households", "Population", "Adults15", "Adults18"), selected = "Population")
),
mainPanel(
plotOutput("map")
)
)
))
答案 0 :(得分:0)
如果您将switch
声明设置为renderPlot
以外的 datafield <- reactive({switch(input$FieldMetric,
"Household" = Plotdata$HHold_Est_2014,
"Population" = Plotdata$Pop_Est_2014,
"Adults 15+" = Plotdata$Adults15_Est_2014,
"Adults 18+" = Plotdata$Adults18_Est_2014
})
,则可能效果会更好:
fill=datafiled()
然后在制作情节时使用geom_polygon
li
答案 1 :(得分:0)
好吧,我有一个有效的版本,但它有点难看。我比以往任何时候都更加确信我只是混淆了如何引用从SERVER.r中的UI.r返回的输入$ metric,并且无论出于什么原因我想要一个字段标题,但它要么返回数据列(一系列整数)或其他一些对象/数据类型。
我使用if / else绕过了它。也许有人将来能够改进原有的解决方案......
shinyServer(
function(input, output) {output$map <- renderPlot({
if (input$metric=="Households"){
ggplot() + coord_map() +
geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Households), color = "black", size = 0.25)
}else if (input$metric=="Population"){
ggplot() + coord_map() +
geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Population), color = "black", size = 0.25)
}else if (input$metric=="Adults15"){
ggplot() + coord_map() +
geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Adults15), color = "black", size = 0.25)
}else if (input$metric=="Adults18"){
ggplot() + coord_map() +
geom_polygon(data = Plotdata, aes(y = PolyCoordsX, x = PolyCoordsY, group = Poly_Name, fill = Adults18), color = "black", size = 0.25)
}else return()
})
} )