使用matplotlib的示例:调整字体-设置colormap和colorbar

news/2024/7/4 12:55:28

使用matplotlib的示例:调整字体-设置colormap和colorbar

 

# -*- coding: utf-8 -*-
#**********************************************************
import os
import numpy as np
import wlab #pip install wlab
import matplotlib
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
from scipy.interpolate import griddata
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'
#**********************************************************
FreqPLUS=['F06925','F10650','F23800','F18700','F36500','F89000']
#
FindPath='/d3/MWRT/R20130805/'
#**********************************************************
fig = plt.figure(figsize=(8,6), dpi=72, facecolor="white")
axes = plt.subplot(111)
axes.cla()#清空坐标轴内的所有内容
#指定图形的字体
font = {'family' : 'serif',
        'color'  : 'darkred',
        'weight' : 'normal',
        'size'   : 16,
        }
#**********************************************************
# 查找目录总文件名中保护F06925,EMS和txt字符的文件
for fp in FreqPLUS:
    FlagStr=[fp,'EMS','txt']
    FileList=wlab.GetFileList(FindPath,FlagStr)
    #
    LST=[]#地表温度
    EMS=[]#地表发射率
    TBH=[]#水平极化亮温
    TBV=[]#垂直极化亮温
    #
    findex=0
    for fn in FileList:
        findex=findex+1
        if (os.path.isfile(fn)):
            print(str(findex)+'-->'+fn)
            #fn='/d3/MWRT/R20130805/F06925_EMS60.txt'
            data=wlab.dlmread(fn)
            EMS=EMS+list(data[:,1])#地表发射率
            LST=LST+list(data[:,2])#温度
            TBH=TBH+list(data[:,8])#水平亮温
            TBV=TBV+list(data[:,9])#垂直亮温
    #-----------------------------------------------------------
    #生成格点数据,利用griddata插值
    grid_x, grid_y = np.mgrid[275:315:1, 0.60:0.95:0.01]
    grid_z = griddata((LST,EMS), TBH, (grid_x, grid_y), method='cubic')
    #将横纵坐标都映射到(0,1)的范围内
    extent=(0,1,0,1)
     #指定colormap
    cmap = matplotlib.cm.jet
    #设定每个图的colormap和colorbar所表示范围是一样的,即归一化
    norm = matplotlib.colors.Normalize(vmin=160, vmax=300)
    #显示图形,此处没有使用contourf #>>>ctf=plt.contourf(grid_x,grid_y,grid_z)
    gci=plt.imshow(grid_z.T, extent=extent, origin='lower',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) #陆地地表温度LST
    #设置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()#清除图形

#plt.show()
print('ALL -> Finished OK')

上面的例子中,每个保存的图,都是用同样的colormap,并且每个图的颜色映射值都是一样的,也就是说第一个图中如果200表示蓝色,那么其他图中的200也表示蓝色。

 

示例的图形如下:


 


http://www.niftyadmin.cn/n/4141109.html

相关文章

STM32建立基本项目

1、下载固件库解压 2、Keil建立项目,项目下建立三个文件夹3、各目录下从固件库中拷贝对应的目录 4、修改main.c文件 5、修改C 6、修改Include 7,编译。 转载于:https://www.cnblogs.com/zhaogaojian/p/8447977.html

关于windows窗体登录验证的思考

下午本来想适应一下登录验证的设计,结果错误接踵而来.纠正了大半天,还是没有搞定.本以为很快就可以搞定的...结果一直拖到晚上.先是在判断用户名或密码为空时进行了处理,原以为if (!textBox1.Text) 或者if (textBox1.Textnull) 就可以搞定.结果编译老是报错.......想了半天,于…

说说二维码

二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。最近通过道哥的文章发现一个二维码制作的网站:http://goqr.me/ 特别是在信息发展这么迅速的地方,二维码能够越来越快速的呈现出…

Codeforces 939D - Love Rescue

传送门:http://codeforces.com/contest/939/problem/D 本题是一个数据结构问题——并查集(Disjoint Set)。 给出两个长度相同,且仅由小写字母组成的字符串Ss[1..n]、Tt[1..n]。已知一个无序对(u,v)可以完成任意次的以下转换操作&a…

今天聊发兴致,写了一个 COM STEP BY STEP,结果。。。

太久没写C程序了,都忘记class声明后面的;号了,唉。。。。转载于:https://www.cnblogs.com/xiaotaoliang/archive/2005/07/20/196230.html

统计子目录大小情况并排序显示

http://blog.chinaunix.net/u/6542/showart.php?id394070使用 du -sh * 可以显示指定目录下各文件/目录的大小情况,但是输出结果不够人性化(human-readable),以 /usr/share/目录为例du -sh /usr/share/* 会输出如下信息654K /usr/share/a…

鼠标相关API应用

我们在编制应用软件的过程中,常常需要对光标和鼠标操作,本人在文中介绍了Windows系统中有关实现对鼠标和光标进行操作的API函数,并给出了在Visual C6.0中利用所介绍的API函数实现对鼠标和光标的操作的代码。一、隐藏和显示光标函数&#xff1…

11.6 MariaDB安装 11.7/11.8/11.9 Apache安装

[rootlizhipenglinux01 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.conf 配置文件[rootlizhipenglinux01 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb 启动脚本[rootlizhipenglinux01 mariadb]# vim /usr/l…