R语言绘图中图例不显示问题排查求助
解决R中zoo/xts绘图时图例不显示的问题
我帮你排查了问题,核心原因是你调用legend()时没有指定**线条类型(lty)**和匹配的线宽(lwd),而plot.zoo(xts对象会自动调用这个绘图方法)绘制的是折线图,图例需要明确指定要展示的线条样式才能正常显示。另外还有个小细节:R的颜色名里规范写法是"darkgreen",而非带空格的"dark green"(虽然部分场景能识别,但避免潜在问题更稳妥)。
修改后的代码
# 绘制第一支股票的折线 plot(norm_prices_daily[,1], col = "blue", lwd=3, grid.col = NA, ylim = c(0,3)) # 添加第二支股票的折线 lines(norm_prices_daily[,2], lwd=3, col = "darkgreen") # 绘制图例,显式指定线条类型和线宽 legend("bottomright", legend=c("Stock 1","Stock 2"), col = c("blue","darkgreen"), lty = 1, # 匹配plot/lines的默认实线类型 lwd = 3) # 和绘图时的线宽保持一致
另一种更适配的方法:使用legend.zoo()
zoo包提供了专门适配zoo对象绘图的legend.zoo()函数,它能更好地兼容zoo绘图的坐标系统,用法和base版legend()几乎一致:
plot(norm_prices_daily[,1], col = "blue", lwd=3, grid.col = NA, ylim = c(0,3)) lines(norm_prices_daily[,2], lwd=3, col = "darkgreen") legend.zoo("bottomright", legend=c("Stock 1","Stock 2"), col = c("blue","darkgreen"), lty = 1, lwd = 3)
为什么之前的代码不显示图例?
当你只给legend()传递col和legend参数时,它默认会尝试绘制点符号(pch),但你的绘图用的是折线(没有点),所以图例里没有可见的元素,看起来就像是"不显示"。通过指定lty=1(实线)和lwd=3,告诉图例要绘制和主图一致的折线样式,这样就能正常显示了。
内容的提问来源于stack exchange,提问作者marcus9476
相关产品推荐
相关产品推荐

