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