R 闪亮的+;ggplot2:基于用户输入在一个图形中绘制多条线

R 闪亮的+;ggplot2:基于用户输入在一个图形中绘制多条线,r,plot,ggplot2,shiny,R,Plot,Ggplot2,Shiny,我有数百条TimeSeries行,每条都对应于一组参数的唯一值。我把所有数据放在一个大数据框中。数据如下所示(包含270个时间序列): 我试图实现的是,Shining应用程序允许用户改变他想要的参数,获取用户输入,并在一个绘图中绘制满足这些值的所有时间序列。因此,根据用户的输入,绘图将显示不同的行数-范围从1(当所有参数设置为指定值时)到270(当未选择任何参数时,将绘制所有时间序列) 到目前为止,我还没有成功,所以我无法分享任何有助于解决这个问题的东西,尽管我花了很多天的时间在这个问题上。到目

我有数百条TimeSeries行,每条都对应于一组参数的唯一值。我把所有数据放在一个大数据框中。数据如下所示(包含270个时间序列):

我试图实现的是,Shining应用程序允许用户改变他想要的参数,获取用户输入,并在一个绘图中绘制满足这些值的所有时间序列。因此,根据用户的输入,绘图将显示不同的行数-范围从1(当所有参数设置为指定值时)到270(当未选择任何参数时,将绘制所有时间序列)

到目前为止,我还没有成功,所以我无法分享任何有助于解决这个问题的东西,尽管我花了很多天的时间在这个问题上。到目前为止,我一直在尝试使用
reactivePlot()
并通过在ggplot2中添加
geom_line()
来指定线。现在,我试图研究
aes()
参数是否有可能实现我所需要的。我也读过关于通过重塑2将数据转换为长格式的文章,但我不确定这是我需要的,因为我正在处理TimeSeries数据


提前感谢您。

最后,我选择了BaseR解决方案。不完美,但适合我的需要:

equityplot.IDs <- function()
  {
    bounds <- c(-6000, 100000) #c(min(sapply(eq.list, min)), max(sapply(eq.list, max)))
    colors <- rainbow(length(outputIDs()[[2]]))
    j <- 1
    indexy <- c(0, 6000)
    # Plot
    plot(NULL,xlim=indexy,ylim=bounds)
    for (i in 1:length(equitieslist))
    {
      if(i %in% outputIDs()[[2]])
      {
        profit <- rev(equitieslist[[i]][,1]) #$Profit1)
        lines(1:length(profit), profit, col=colors[j])
        j <- j + 1
      }
    }
  }

equityplot.IDs您可以首先使图形在外部发亮,直到确定绘图为止。您可能想将
TimeSeriesID
映射到一个组或颜色或填充,例如
aes(…,group=as.factor(TimeSeriesID))
@RomanLuštrik:谢谢,是的,我正在尝试先单独绘制。你能不能说得更具体一点,如何实现这一目标?其次,情节需要互动。在给定用户指定参数的情况下,如何更新它?
equityplot.IDs <- function()
  {
    bounds <- c(-6000, 100000) #c(min(sapply(eq.list, min)), max(sapply(eq.list, max)))
    colors <- rainbow(length(outputIDs()[[2]]))
    j <- 1
    indexy <- c(0, 6000)
    # Plot
    plot(NULL,xlim=indexy,ylim=bounds)
    for (i in 1:length(equitieslist))
    {
      if(i %in% outputIDs()[[2]])
      {
        profit <- rev(equitieslist[[i]][,1]) #$Profit1)
        lines(1:length(profit), profit, col=colors[j])
        j <- j + 1
      }
    }
  }
ggpokus <- function(n) {

  mymin <- function(N = n){
    m <- Inf
    for (i in 1:N)
    {
      g <- length(equitieslist[[i]][,1])
      if (g < m) {m <- g}
    }
    return (m)
  }

  mylength <- mymin()
  # t <- paste("qplot(1:", mylength, ", rev(equitieslist[[", 1, "]][,1])[1:", mylength, "], geom = \"line\")", sep = "")
  t <- paste("qplot(1:", mylength, ", rev(equitieslist[[", 1, "]][,1])[1:", mylength, "], geom = \"line\", ylim = c(0, 5000))", sep = "")
  cols <- rainbow(n)
  for (i in 1:n) {
    p <- paste("rev(equitieslist[[", i+1, "]][,1])[1:", mylength, "])", sep = "")
    c <- paste("\"", cols[i+1], "\"", sep = "") #  paste("cols[", i, "]", sep = "")
    t <- c(paste(t, " + geom_line(aes(y = ", p,", colour = ", c, ")", sep = ""))
  }
  # cat(t)
  # cat("\n")
  return (t)
}

options(expressions=10000)
z <- ggpokus(1619)

eval(parse(text=z))