R语言使用Plotly绘制折线图出现C栈使用率超限错误如何解决
R中Plotly绘制时间序列触发C栈溢出报错的解决方案
报错根因
该报错核心是strptime()返回的为POSIXlt类型时间对象,这类对象采用列表结构存储时间信息,Plotly在序列化处理时会触发无限递归,哪怕数据量极小也会触发栈溢出错误。
解决方法
将时间格式转换为Plotly兼容的POSIXct类型即可,POSIXct采用数值格式存储时间,不会触发递归解析问题。
修正后代码
library(plotly) df = head(originalDf, 3) # 直接生成POSIXct格式时间,可根据实际时区调整tz参数 dt = as.POSIXct(df$dt, format = "%Y-%m-%dT%H:%M:%OSZ", tz = "UTC") myvalue = df$myvalue plot_ly(df, x = dt, y = myvalue, type = 'scatter', mode = 'lines')
额外排查点
如果修改后仍存在异常,可按以下步骤排查:
- 检查原始时间字符串的格式是否与指定的
format参数完全匹配,格式不匹配生成的NA值可能触发额外异常 - 先用R基础
plot()函数绘制折线图,确认时间解析环节本身不存在错误,排除数据预处理问题 - 升级Plotly包与R版本,旧版本Plotly对时间类型的适配存在已知缺陷
内容的提问来源于stack exchange,提问作者Simon Rex
相关产品推荐
相关产品推荐

