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
相关产品推荐
相关产品推荐

