You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言绘制美国国债收益率曲线时图例未显示问题求助

R语言绘制美国国债收益率曲线图例不显示的解决方案

问题原因

通过quantmod::getSymbols从FRED获取的国债收益率数据为xts时间序列格式,调用plot()绘制xts对象时实际调用xts::plot.xts方法,该方法默认压缩绘图边距、使用自定义坐标系统,你设置的topleft位置图例刚好落在绘图区域外边缘,被系统默认裁剪规则隐藏。

解决方案

方案1:直接修改图例参数(最简便)

在原legend代码中新增inset和xpd两个参数即可,修改后的完整绘图代码如下:

plot(US5Y, lwd=2, col="blue",lty = "solid" ,ylab="", xlab="",ylim=c(0.4,3), 
main = "US Treasury Yields")
lines(US10Y, col="black", lwd=2, lty="dotted")
lines(US30Y, col="red", lwd=2, lty="dashed")
legend(x="topleft", legend=c("US5Y", "US10Y","US30Y"), col=c("blue", "black", "red"),
lwd=2, lty=c("solid", "dotted","dashed"), inset = 0.02, xpd = TRUE)    
  • inset = 0.02:控制图例向绘图区域内部缩进2%的距离,避免落在边缘
  • xpd = TRUE:允许图形元素渲染在绘图区域的边距范围内,解除裁剪限制

方案2:提前调整绘图边距

如果方案1仍不生效,可以在绘图代码前先调整全局绘图边距,预留足够的图例展示空间:

# 调整下、左、上、右四个方向的边距,扩大上方和左侧边距
par(mar = c(3, 4, 3, 2))
plot(US5Y, lwd=2, col="blue",lty = "solid" ,ylab="", xlab="",ylim=c(0.4,3), 
main = "US Treasury Yields")
lines(US10Y, col="black", lwd=2, lty="dotted")
lines(US30Y, col="red", lwd=2, lty="dashed")
legend(x="topleft", legend=c("US5Y", "US10Y","US30Y"), col=c("blue", "black", "red"),
lwd=2, lty=c("solid", "dotted","dashed"))    

内容的提问来源于stack exchange,提问作者Armando Delgado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:30:03