R语言调用legend函数后图例不显示且无报错如何解决
R语言折线图图例不显示问题解决
核心原因
你设置的图例Y轴坐标95远超过当前绘图区域的Y轴范围,图例被绘制在可视区域外,因此看不到,也不会触发报错——R已正常执行绘图指令,仅绘制区域超出画布可视范围。
你的所有Y轴数据(meanvec系列)取值范围仅在9.3~23.7之间,R基础绘图的plot函数默认会根据传入的第一组数据(meanvec25)自动设置Y轴范围,最大仅到24左右,95完全不在可视区间内。
你可以运行par("usr")查看当前绘图的坐标范围,返回值的后两位就是Y轴的最小、最大值,即可验证该问题。
解决方法
方法1:调整图例坐标到可视区间
直接把legend的Y坐标修改到Y轴范围内即可,示例:
legend(1, 23, legend=c("25 Trees","100 Trees","500 Trees","2000 Trees","5000 Trees"), col=c("red", "blue","green","purple","orange"), lty=1, cex=0.8)
方法2:预定义Y轴范围预留图例空间(推荐)
调用plot时手动指定ylim参数,给图例预留足够空间,同时可以用位置关键词代替手动坐标,避免出错:
# 绘图时设置Y轴范围到9~28,预留图例位置 plot(predictors,meanvec25,col="red",type="l", ylim = c(9, 28)) lines(predictors,meanvec100,col="blue",type="l") lines(predictors,meanvec500,col="green",type="l") lines(predictors,meanvec2000,col="purple",type="l") lines(predictors,meanvec5000,col="orange",type="l") # 用topright关键词自动定位到右上角,无需手动计算坐标 legend("topright", legend=c("25 Trees","100 Trees","500 Trees","2000 Trees","5000 Trees"), col=c("red", "blue","green","purple","orange"), lty=1, cex=0.8)
内容的提问来源于stack exchange,提问作者Gretchen
相关产品推荐
相关产品推荐

