python:动态显示+双Y坐标+多图显示+最大化窗口+保存图片方法

实现效果如下图所示

 伪代码如下所示:

iters = 0
while 条件:
    iters +=1 
    RC[iters] += 更新
    RCIters.extend(RC.T.tolist()) 更新

    
    fig = plt.figure(1)
    #最大化显示
    manager = plt.get_current_fig_manager()
    manager.window.showMaximized()

    plt.ion() # 动态显示
    plt.clf() # 清屏

    left = fig.add_subplot(121)
    left.set_xlabel('X')
    left.set_ylabel('Y')
    left.set_title('回归')
    left.scatter(X[:, 0], Y, s=1) # 绘制散点
    # 为什么需要排序?因为plot默认是顺序绘制,当点都在一条直线上的时候,重叠在一起,看不出来
    # 当点不在一条直线上的时候,
    srtInd = X[:, 0].argsort(0).T.tolist()[0] # 排序,返回索引值
    xSort = X[srtInd][:, 0]
    left.plot(xSort, preY[srtInd], 'r') # 绘制拟合直线

    ax1 = fig.add_subplot(122)
    # 权重与迭代次数关系
    ax1.set_xlabel('迭代次数')
    ax1.set_ylabel('权重')
    ax1.set_title('批量梯度下降:同步更新参数')
    ax1.plot(RCIters)#绘制权重参数与迭代次数关系
    # 残差与迭代次数关系
    ax2 = ax1.twinx()
    ax2.set_ylabel('残差')
    ax2.set_xlabel('迭代次数')
    ax2.plot(LossList, 'k--')#绘制总残差线
    # 保存图片
    # plt.savefig('./Data/Gif/' + str(iters).zfill(3) + '.jpg')#填充数字
    plt.show()
    plt.pause(0.001)#延时
    plt.ioff() # 关闭交互模式

使用plot的时候哪种情况下需要先排序然后再绘制线段

你可能感兴趣的:(python3基础,python)