R语言lines()函数未添加曲线至plot(type='l')绘图的问题排查
这不是R的Bug,是数据范围的问题!
这绝对不是R的bug哦!我来帮你搞清楚为什么lines()画的曲线看不到:
问题根源
当你执行plot(1:5, vector, type = 'l')时,R会自动根据vector的数值范围设置y轴的显示区间——vector的最小值是6.648,最大值是23.047。而你的array数据呢?除了第一个值4.11略小于6.648,剩下的都是0.003、0.004这种极小的数,完全落在了这个y轴区间之外。所以lines()确实已经执行了,但画出来的线在图的可视区域外面,你自然看不到它。
快速解决方法
只需要在plot()里手动设置y轴范围,让它包含两个向量的所有数值就行。你可以用range()函数计算两个向量的整体最小和最大值,然后传给ylim参数:
array <- read.table('array.txt')[[1]] vector <- read.table('vector.txt')[[1]] # 计算两个向量的整体数值范围 y_total_range <- range(c(array, vector)) # 绘图时指定y轴范围 plot(1:5, vector, type = 'l', ylim = y_total_range) # 给lines加个颜色,方便区分两条曲线 lines(1:5, array, col = 'red', lwd = 2)
验证小技巧
你可以先打印两个向量的数值和范围,直观感受它们的差异:
print("array的数值:") print(array) print("vector的数值:") print(vector) print("array的范围:") print(range(array)) print("vector的范围:") print(range(vector))
这样就能明白为什么一开始看不到array的曲线啦~
内容的提问来源于stack exchange,提问作者Nisba
相关产品推荐
相关产品推荐

