R 数据帧绘图仅零未对齐

R 数据帧绘图仅零未对齐,r,R,我对R绘图有点陌生,对图形有点问题。 我构建了一个数据框架,根据列的不同,它包含不同日期的值。我的数据框在第一列中有日期,然后是不同日期的值,但不一定是所有日期的值。因此,我使用na.locf通过第一个值删除2个值之间的na(希望我足够清楚)。剩余的na是每列第一个值之前的na,然后我将其替换为0。 然后我试着用x轴上的日期和y轴上的时间序列的演变来绘制我的df。 我的问题是,不知何故,我的一个图形的0值之间存在一些差异(参见屏幕截图),橙色线从0开始,然后有一些值。如果我把鼠标放在图形上,在“

我对R绘图有点陌生,对图形有点问题。 我构建了一个数据框架,根据列的不同,它包含不同日期的值。我的数据框在第一列中有日期,然后是不同日期的值,但不一定是所有日期的值。因此,我使用na.locf通过第一个值删除2个值之间的na(希望我足够清楚)。剩余的na是每列第一个值之前的na,然后我将其替换为0。 然后我试着用x轴上的日期和y轴上的时间序列的演变来绘制我的df。 我的问题是,不知何故,我的一个图形的0值之间存在一些差异(参见屏幕截图),橙色线从0开始,然后有一些值。如果我把鼠标放在图形上,在“大落差”之前,值显示为0,在0.00之后。此时df没有本次序列的值。此外,这些图形似乎没有相同的y轴,即使它们应该,我不明白为什么

我创建图表的代码是:

  if (dim(df1)[1] != 0){

  df1 <- na.locf(df1)

  df1[is.na(df1)] <- 0.00

  all_names <- colnames(df1)[-1]

  for (i in all_names){
    if (i==all_names[1]){
      p <- plot_ly(x = df1$date, y= df1[,i] , name = i, type = 'scatter', mode = 'lines')
    }else{
      p <- p %>% add_trace(y = df1[,i], name = i, type = 'scatter', mode = 'lines')
    }

  }


  output$info_graph <- renderPlotly({
    p
  })

  output$info_output <- renderUI({
    plotlyOutput("info_graph")
  })

}else{
  output$info_output <- renderUI({
  })
}

代码的问题在于,您正在打印字符变量,这些变量在打印调用中转换为分类变量。罪魁祸首是错误地使用了
na.locf
功能

数据帧的第一列是字符列,当您将整个数据帧提供给
na.locf
时,它会将所有内容转换为字符。这里有一个修正:

library(zoo)
library(plotly)
将日期列转换为
POSIXct

df1$date <- as.POSIXct(df1$date)

您能提供数据吗?我会尝试,但数据框非常大。。。!如何最好地提供它们?如果您可以使用数据的子集(如50行或更少)重现问题,然后使用
dput(data1)
并将输出粘贴到问题,那将是最好的。然后提供该数据子集的图表。刚才在EDIT2中做了。我提供了答案。请检查。非常感谢。它工作正常!由于我的列数并不总是2,所以我使用了以下命令:df1[,2:dim(df1)[2]]
df1$date <- as.POSIXct(df1$date)
df1[,2:3] <- na.locf(df1[,2:3])
df1[is.na(df1)] <- 0.00

for (i in all_names){
  if (i==all_names[1]){
    p <- plot_ly(x = df1$date, y= df1[,i] , name = i, type = 'scatter', mode = 'lines')
  }else{
    p <- p %>% add_trace(y = df1[,i], name = i, type = 'scatter', mode = 'lines')
  }

}
p