笔者在绘制折线图的时候,发现两条折线完全对应不上(实际数据中,应当大部分重合),绘图代码如下:
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(simple_x,datelist,label="pred of {}".format(j))
ax2 = ax1.twinx()
ax2.plot(simple_x2,datelist2,label="real of {}".format(j),color='red',linewidth=2.0,linestyle='--')
# ADD THIS LINE
ax2.set_yticks(np.linspace(ax2.get_yticks()[0], ax2.get_yticks()[-1], len(ax1.get_yticks())))
fig.legend(loc="lower right")
#print(datelist)
#plt.plot(xnew, power_smooth)
plt.show()
因此使用双边y轴查看,发现是有一条折线所对应的y轴乱序了:
看右侧的轴线就能发现问题。
查了很久,最终发现是因为原始数据读取到的是string类型,字符串不会按照0,1,2,3的顺序排序,因此需要强制类型转换
将数据全部转为float型后,图像恢复正常
很难查出的一个bug,特此记录。