R语言绘制XTS对象时如何添加可正常显示的图例?
方案1:直接在XTS绘图中显示图例(最优解)
你调用plot()绘制多列XTS对象时默认采用多面板布局,每列单独占一个子图,legend()的坐标匹配不到预期绘图区域,因此无法正常显示。只需添加plot.type = "single"参数,让所有序列绘制在同一画布即可:
qualityTools::plot(close, col=1:ncol(close), plot.type = "single") legend('topleft', legend=colnames(close), col=1:ncol(close), lty=1, cex=0.5)
执行后即可同时保留真实时间轴和正常显示的图例。
方案2:优化TS对象绘图的时间轴
如果坚持使用TS对象的绘图方案,可以手动关闭默认生成的计数x轴,替换为XTS对象的原始时间索引:
closets <- stats::as.ts(close) # 绘图时关闭默认x轴 qualityTools::plot(closets, plot.type='single', col = 1:ncol(closets), xaxt = "n") # 提取原始时间索引 origin_date <- zoo::index(close) # 自定义刻度位置,可按需求调整间隔,此处按每年一个刻度设置 tick_loc <- seq(1, length(origin_date), by = 252) # 手动生成时间轴,日期格式可自定义 axis(side = 1, at = tick_loc, labels = format(origin_date[tick_loc], "%Y-%m")) # 添加图例 legend('topleft', legend=colnames(closets), col=1:ncol(closets), lty=1, cex=0.5)
内容的提问来源于stack exchange,提问作者raml5
相关产品推荐
相关产品推荐

