zoukankan      html  css  js  c++  java
  • matplotlib绘图

    matplotlib绘图

    显示图片

    • plt.polt()等绘图函数不会直接在窗口中绘图,只有调用plt.show()(窗口不会自动关闭)或plt.pause()(窗口自动关闭)时才将内存中的图绘制到窗口;
    • 程序碰到第一个plt.show()时,绘图后会暂停执行,直到手动关闭当前窗口才继续执行后面的代码
    • plt.pause(time)函数也能实现窗口绘图(不需要plt.show),但窗口只停留time时间便会自动关闭,然后再继续执行后面代码;plt.pause()会把它之前的所有绘图都绘制在对应坐标系中,而不仅仅是在当前坐标系中绘图;特别要注意的是,plt.pasue(0)将绘制之前的所有图像,且图像窗口不会自动关闭,但程序会停止在该语句所在位置,即使手动关闭窗口也不会继续执行后面的代码;

    保存图片

    import matplotlib.pyplot as plt
    
    fig = plt.gcf()
    plt.show()
    fig.savefig("filename.png", dpi=100)
    

    这样可以避免保存一个空白的图片。

    颜色映射

    单通道图像,有时候需要通过一定的颜色映射来进行可视化,多数时候还需要显示colorbar来标示颜色代表的数值,这里涉及几个常见问题:

    • 如何设置颜色映射
    cmap = matplotlib.cm.jet
    plt.imshow(img, cmap=cmap)
    
    • 如何显示colorbar
    plt.imshow(img)
    plt.colorbar()
    
    • 如何保持多张图的colorbar数值范围一致
    # 方法一
    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(d1, vmin=0, vmax=100)
    plt.colorbar()
    
    plt.subplot(1,2,2)
    plt.imshow(d2, vmin=0, vmax=100)
    plt.colorbar()
    # 方法二
    vnorm = mpl.colors.Normalize(vmin=0, vmax=100)
    
    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(d1, norm=vnorm)
    plt.colorbar()
    
    plt.subplot(1,2,2)
    plt.imshow(d2, norm=vnorm)
    plt.colorbar()
    
    • pyplot直接保存会有一圈白边,如何去掉白边,同时关闭坐标轴显示
    fig = plt.figure()
    plt.imshow(img)
    plt.axis('off')
    plt.savefig("filename.png", bbox_inches='tight', dpi=fig.dpi, pad_inches=0.0)
    
    • 一个比较完整的示例
    #指定colormap
    cmap = matplotlib.cm.jet
    
    #设定每个图的colormap和colorbar所表示范围是一样的,即归一化
    norm = matplotlib.colors.Normalize(vmin=160, vmax=300)
    
    #显示图形
    gci = plt.imshow(img, cmap=cmap, norm=norm)
    
    #配置一下坐标刻度等
    ax = plt.gca()
    ax.set_xticks(np.linspace(0,1,9))
    ax.set_xticklabels( ('275', '280', '285', '290', '295',  '300',  '305',  '310', '315'))
    ax.set_yticks(np.linspace(0,1,8))
    ax.set_yticklabels( ('0.60', '0.65', '0.70', '0.75', '0.80','0.85','0.90','0.95'))
    
    #显示colorbar
    cbar = plt.colorbar(gci)
    cbar.set_label('$T_B(K)$',fontdict=font)
    cbar.set_ticks(np.linspace(160,300,8))
    cbar.set_ticklabels( ('160', '180', '200', '220', '240',  '260',  '280',  '300'))
    
    #设置label
    ax.set_ylabel('Land Surface Emissivity',fontdict=font)
    ax.set_xlabel('Land Surface Temperature(K)',fontdict=font)
    
    #设置title
    titleStr = '$T_B$ for Freq = ' + str(float(fp[1:-1])*0.01) + 'GHz'
    plt.title(titleStr)
    figname = fp + '.png'
    plt.savefig(figname)
    plt.clf()
    

    参考

    用matplotlib的imshow显示图像,设置colorbar的颜色范围
    使用matplotlib的示例:调整字体-设置刻度、坐标、colormap和colorbar等

  • 相关阅读:
    SQL_Server_2005_启用远程连接
    Oracle外网或内网远程连接
    还原数据库到指定时间点
    SQL Server账号密码(sa)登录失败 错误原因:18456
    sql server如何设置密码过期时间呢?
    安装SQL Server2014 :规则”Windows Management Instrumentation (WMI)服务 “失败
    impala
    dolphinscheduler
    829. Consecutive Numbers Sum 连续的数字求和
    472. Concatenated Words 查找自己拼出来的单词 反向word break
  • 原文地址:https://www.cnblogs.com/tofengz/p/13722834.html
Copyright © 2011-2022 走看看