【发布时间】:2014-06-18 06:53:22
【问题描述】:
我正在让自己熟悉 Shiny,但是,熟悉可能有点夸大其词......我尝试了 Shiny 教程,特别是我想将 Lesson 5 改编为我自己的 data。
我创建了一个额外的 R-Script help.R,就像在教程中一样:
percent_map <- function(var, color, legend, min = 0, max = 100) {
# constrain gradient to percents that occur between min and max
var <- pmax(var, min)
var <- pmin(var, max)
#plot
aha <- ggplot(abst, aes(long,lat, group=group))+
geom_polygon(aes(fill=var))+
coord_fixed()+
scale_fill_gradient(low = "lightskyblue", high = color,
space = "Lab", na.value = "lightblue")+
labs(title=var, x="", y="")+
theme(axis.text=element_blank(),
axis.ticks=element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank()
)
print(aha)
}
我的ui.R:
library(shiny)
# Define UI for application that draws a histogram
shinyUI(fluidPage(
titlePanel("Ja-Anteil von Abstimmungen"),
sidebarLayout(
sidebarPanel(
helpText("Create maps with information from ballot outcomes."),
selectInput("var",
label = "Choose a variable to display",
choices = c("Epidemiegesetz",
"BG",
"1:12",
"Familien",
"Nationalstrassenabgabegesetz"),
selected = "Epidemiegesetz"),
sliderInput("range",
label = "Range of interest:",
min = 0, max = 100, value = c(0, 100))
),
mainPanel(plotOutput("map"))
)
))
还有我的server.R:
library(ggplot2)
abst <- readRDS("~/try.RDS")
abst$KANTONSNR <- as.numeric(abst$KANTONSNR)
source("~/help.R")
library(shiny)
shinyServer(
function(input, output) {
output$map <- renderPlot({
data <- switch(input$var,
"Epidemiegesetz" = abst$Epidemiegesetz,
"BG" = abst$BG,
"1:12" = abst$Loehne,
"Familien" = abst$Familien,
"Nationalstrassenabgabegesetz" = abst$Nationalstrassenabgabegesetz)
color <- switch(input$var,
"Epidemiegesetz" = "darkgreen",
"BG" = "red",
"1:12" = "darkorange",
"Familien" = "darkviolet",
"Nationalstrassenabgabegesetz" = "darkblue")
legend <- switch(input$var,
"Epidemiegesetz" = "Epidemiegesetz",
"BG" = "BG",
"1:12" = "Sozis",
"Familien" = "Familien",
"Nationalstrassenabgabegesetz" = "blablabla")
percent_map(var = data, color = color, max = input$range[2], min = input$range[1])
})
}
)
但这甚至无法远程工作:
Error: arguments imply differing number of rows: 0, 179493
我做错了什么? 提前致谢。
【问题讨论】:
-
您能尝试缩小问题范围吗?我试图生成一个静态图(即没有闪亮),我得到“错误:提供给连续比例的离散值”。您确定绘图代码按预期工作吗?
-
如果我生成一个普通的 ggplot 地图,我确信情节可以工作(当然必须指定
scale_fill_gradient命令high。