在闪亮的我已经建立了一个应用程序,将各种价格数据绘制成图表。我正在密谋:
x轴=日期
y轴=价格
melt()
)我在ui中有一个selectInput框,通过过滤ccy2.price.melt
过滤掉用户不想使用的模型。
一切都很完美,直到我只留下一个模型展示。然后出现以下错误:
错误:维数不正确
我假设它与:
aes(color = variable)
是否可以解决这个问题,以便在仅绘制一个模型时可以使用此代码绘制所需的图表?
model.fixed.colours <- reactive ({ cbind(c("unhedged", "custom", "hedged", "quant"), c(input$unhedged.colour, input$custom.colour, input$hedged.colour, input$quant.colour)) })
ccy2.models.price <- reactive({
models <- c()
if("Unhedged" %in% input$models.for.price.chart) {
models <- append(models, "unhedged")
}
if("Custom" %in% input$models.for.price.chart) {
models <- append(models, "custom")
}
if("Hedged" %in% input$models.for.price.chart) {
models <- append(models, "hedged")
}
if("QUANT" %in% input$models.for.price.chart) {
models <- append(models, "quant")
}
models
})
output$ccy2.price <- renderPlot ({
values <- ccy2.price.melt()[ccy2.price.melt()$variable %in% ccy2.models.price(),]
colour <- model.fixed.colours()[model.fixed.colours()[,1] %in% ccy2.models.price(),]
ggplot(values, aes(x = date, y = value)) +
geom_line(aes(colour = variable), size = 1) +
theme_bw() +
scale_color_manual(values = colour[,2]) +
labs(colour = "") +
xlab("Date") +
ggtitle(paste("Average ", input$ccy2, "/", input$base.ccy, " FX Rate ", sep = "" )) +
theme(plot.title = element_text(size=20, face="bold", margin = margin(10, 0, 10, 0))) +
theme(panel.border = element_blank()) +
theme(axis.line.x = element_line(color="black", size = 0.5), axis.line.y = element_line(color="black", size = 0.5)) +
theme(legend.key = element_rect(fill = NULL, color = "white")) +
guides(colour = guide_legend(override.aes = list(size=4))) +
scale_y_continuous("FX Rate", limits = c(min.ccy2.price(),max.ccy2.price()))
})
答案 0 :(得分:0)
它与行scale_colour_manual(values = colour[,2])
当你只有一个变量时,这是一个向量而不是一个矩阵,因此当你要求[,2]
时,你要求的是一个1暗淡对象的第二维中的东西。尝试将其设为data.frame
而不是矩阵。
model.fixed.colours <- reactive ({
data.frame(Name = c("unhedged", "custom", "hedged", "quant"),
Colour = c(input$unhedged.colour, input$custom.colour, input$hedged.colour, input$quant.colour))
})
然后用
替换该行scale_color_manual(values = colour$Colour) +
和
colour <- subset(model.fixed.colours(),Name %in% ccy2.models.price())