meteva

提供气象产品检验相关python程序


多图层绘制

<p>[TOC]</p> <pre><code class="language-python">import meteva.base as meb import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 from meteva.base.tool.plot_tools import add_china_map_2basemap import pandas as pd</code></pre> <p><strong>在检验或诊断分析的时候,经常需要绘制多要素叠加的图形,该模块提供了一部分平面图绘制功能,若需要更全面丰富的绘图功能支持可参考使用MetDig。</strong> </p> <h1>创建底图</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>creat_axs(nplot,map_extend,ncol = None,height = None,width = None,dpi = 300,sup_title = None,sup_fontsize = 12,add_county_line = False,add_worldmap = True,title_list = None,add_index = None,wspace = None,grid = True)</strong>&lt;/font&gt;<br /> 将网格数据绘制成填色图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;nplot&lt;/font&gt;</strong></td> <td style="text-align: left;">待创建的平面图中包含nplot个子图</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;map_extend&lt;/font&gt;</strong></td> <td style="text-align: left;">底图的范围,缺省时自动根据站点数据的范围确定底图范围,不缺省时采用[slon,elon,slat,elat] 列表作为参数,也可也接受<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格信息类变量</a>作为地图范围的参数</td> </tr> <tr> <td style="text-align: left;"><strong>ncol</strong></td> <td style="text-align: left;">子图的列数</td> </tr> <tr> <td style="text-align: left;"><strong>height</strong></td> <td style="text-align: left;">图片的高度,缺省时程序自动设置</td> </tr> <tr> <td style="text-align: left;"><strong>width</strong></td> <td style="text-align: left;">图片的宽度,缺省时程序自动设置</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">图片的分辨率,效果同matplotlib的dpi参数</td> </tr> <tr> <td style="text-align: left;"><strong>sup_title</strong></td> <td style="text-align: left;">sub_plot 不为None图片中包含多个子图时起作用,sup_title可以时None,字符串或字符串列表,当取值为字符时,所有批量制作的图片会有相同的sup_title,当其为列表时,会逐一为每张图片设置sup_title</td> </tr> <tr> <td style="text-align: left;"><strong>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td> </tr> <tr> <td style="text-align: left;"><strong>add_county_line</strong></td> <td style="text-align: left;">是否在地图中增加县界</td> </tr> <tr> <td style="text-align: left;"><strong>add_worldmap</strong></td> <td style="text-align: left;">是否在其它国家的国界</td> </tr> <tr> <td style="text-align: left;"><strong>add_minmap</strong></td> <td style="text-align: left;">是否添加南海小地图,该参数取值为&quot;left&quot;时小地图在左侧,&quot;right&quot;时小地图在右侧,取值为False时不添加子图,None时程序自动判断是否需要添加子图</td> </tr> <tr> <td style="text-align: left;"><strong>title_list</strong></td> <td style="text-align: left;">各子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>add_index</strong></td> <td style="text-align: left;">在每个子图左上角添加的子图标号,如(a),(b)等</td> </tr> <tr> <td style="text-align: left;"><strong>wspace</strong></td> <td style="text-align: left;">子图左右间隙</td> </tr> <tr> <td style="text-align: left;"><strong>grid</strong></td> <td style="text-align: left;">是否添加经纬度网格线</td> </tr> <tr> <td style="text-align: left;"><strong>xticks_inter</strong></td> <td style="text-align: left;">x坐标轴刻度间隔</td> </tr> <tr> <td style="text-align: left;"><strong>yticks_inter</strong></td> <td style="text-align: left;">y坐标轴刻度间隔</td> </tr> <tr> <td style="text-align: left;"><strong>linewidth</strong></td> <td style="text-align: left;">如果设置了自定义地图,可以用该参数控制每一个自定义地图的线宽</td> </tr> <tr> <td style="text-align: left;"><strong>color</strong></td> <td style="text-align: left;">如果设置了自定义地图,可以用该参数控制每一个自定义地图的颜色</td> </tr> <tr> <td style="text-align: left;"><strong>keep_ticks</strong></td> <td style="text-align: left;">是否保留子图的坐标轴,默认值keep_ticks=1时绘制所有子图的xy轴刻度,keep_ticks =0时,只绘制最左侧子图的Y轴刻度和最底部子图的x轴刻度</td> </tr> <tr> <td style="text-align: left;"><strong>width_colorbar</strong></td> <td style="text-align: left;">colorbar的宽度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">当每个子图不包含南海子地图时,返回一个列表,其中包含了各子图的画图框。当子图包含南海子地图时,包含2个元素的元组,第0个元素是一个列表,其中包含了各子图的画图框,第1个元素也是1个列表,其中包含了各南海小地图对应的画图框</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">map_extend = [70,140,15,55] axs = meb.creat_axs(4,map_extend,ncol = 2,sup_title = &amp;quot;2022年1月1日形势场&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;], sup_fontsize = 8,add_minmap=False)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b40e941db8ebcd37abcb887af3f79143" alt="" /></p> <pre><code class="language-python">map_extend = [70,140,15,55] axs,masx = meb.creat_axs(4,map_extend,ncol = 2,sup_title = &amp;quot;2022年1月1日形势场&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;], sup_fontsize = 8,add_minmap=&amp;quot;left&amp;quot;)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a15f20b3d0d767fd5ca7f6b17dec2097" alt="" /></p> <h1>添加散点文字图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>def add_scatter_text(ax,sta0,color = &quot;k&quot;,cmap = None,clevs = None,tag = 2, alpha = 1,font_size = 10,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 将网格数据绘制成填色图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据</td> </tr> <tr> <td style="text-align: left;"><strong>color</strong></td> <td style="text-align: left;">文字的颜色,若cmap不为空时起作用</td> </tr> <tr> <td style="text-align: left;"><strong>cmap</strong></td> <td style="text-align: left;">字符或者matplotlib 的cm对象。 缺省值&quot;rainbow&quot;对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如&quot;rainbow&quot;,&quot;bwr&quot;等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考<a href="https://www.showdoc.com.cn/meteva?page_id=3975606661430140">meb.def_cmap_clevs函数说明</a></td> </tr> <tr> <td style="text-align: left;"><strong>clevs</strong></td> <td style="text-align: left;">填色的等级设置,取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>tag</strong></td> <td style="text-align: left;">数值转文字保留的有效位数</td> </tr> <tr> <td style="text-align: left;"><strong>alpha</strong></td> <td style="text-align: left;">此次添加的数据图层的透明度,alpha =0 代表完全透明</td> </tr> <tr> <td style="text-align: left;"><strong>font_size</strong></td> <td style="text-align: left;">散点文字的字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">rain24 = meb.read_stadata_from_micaps3(r&amp;quot;H:\test_data\input\meb\plot_adv\RAIN24H_22052720.000&amp;quot;) rain24 = meb.sele_by_para(rain24,value = [0,1000])</code></pre> <pre><code class="language-python">map_extend = [105,110,23,26] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水观测&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8) image = meb.add_scatter_text(axs[0],rain24,cmap = meb.cmaps.rain_24h,tag = 0)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f773ae2887af50948f466e88946c65ce" alt="" /></p> <h1>添加散点图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_scatter(ax,sta,cmap = &quot;rainbow&quot;,clevs = None,point_size = None,fix_size = True,threshold = 2,min_spot_value = 0,mean_value = 2,add_colorbar = True,alpha = None,title = None,title_fontsize = 8,extend = None,colorbar_location = None)</strong>&lt;/font&gt;<br /> 将网格数据绘制成填色图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;sta&lt;/font&gt;</strong></td> <td style="text-align: left;">站点数据</td> </tr> <tr> <td style="text-align: left;"><strong>cmap</strong></td> <td style="text-align: left;">字符或者matplotlib 的cm对象。 缺省值&quot;rainbow&quot;对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如&quot;rainbow&quot;,&quot;bwr&quot;等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考<a href="https://www.showdoc.com.cn/meteva?page_id=3975606661430140">meb.def_cmap_clevs函数说明</a></td> </tr> <tr> <td style="text-align: left;"><strong>clevs</strong></td> <td style="text-align: left;">填色的等级设置,取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>point_size</strong></td> <td style="text-align: left;">站点填色半径的平均半径,缺省情况下程序会自动计算,保证不出现明显重叠</td> </tr> <tr> <td style="text-align: left;"><strong>fix_size</strong></td> <td style="text-align: left;">是否需要根据站点值来确定站点填色的半径</td> </tr> <tr> <td style="text-align: left;"><strong>min_spot_value</strong></td> <td style="text-align: left;">当fix_size = False时,站点填色的半径由</td> <td>站点值- min_spot_value 来确定。缺省值为0,即采用站点值的绝对值确定</td> </tr> <tr> <td style="text-align: left;"><strong>mean_value</strong></td> <td style="text-align: left;">由于可能需要根据站点值来设置站点填色的半径,而不同站点数据填色半径的基准值会存在差异, 为了在批量调用该绘图模块绘制图片时采用统一的基准,可以通过设置统一的mean_value 来保持该基准。mean_value 可大概设置为批量站点数据的平均值</td> </tr> <tr> <td style="text-align: left;"><strong>add_colorbar</strong></td> <td style="text-align: left;">是否为子图添加colorbar</td> </tr> <tr> <td style="text-align: left;"><strong>alpha</strong></td> <td style="text-align: left;">此次添加的数据图层的透明度,alpha =0 代表完全透明</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>extend</strong></td> <td style="text-align: left;">extend 参数用于控制 colorbar 的扩展端口的外观,用法和matplotlib中一致,默认值为&quot;neither&quot; ,即colorbar两端都是方的。extend = &quot;both&quot;时,colorbar 的两端都是尖的。extend = &quot;min&quot;时,colorbar 的最小值一端是尖的。extend = &quot;max&quot;时,colorbar 的最大值一端是尖的</td> </tr> <tr> <td style="text-align: left;"><strong>colorbar_location</strong></td> <td style="text-align: left;">colorbar的位置,默认情况下程序自动确定colorbar的位置,需要自定义的时候使用该参数,参数的取值为列表,内容为[x,y,width,height],代表colorbar的起始位置和宽高,示例为 colorbar_location = [0.8,0.1,0.05,0.6]</td> </tr> <tr> <td style="text-align: left;"><strong>alpha</strong></td> <td style="text-align: left;">添加的图层的透明度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">子图对应的image</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">map_extend = [105,110,23,26] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水观测&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8) meb.add_scatter_text(axs[0],rain24,cmap = meb.cmaps.rain_24h,tag = 0) image = meb.add_scatter(axs[1],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=48cbccd7f5e8e91c86c39b7996c3526f" alt="" /></p> <h1>添加填色图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_contourf(ax,grd,cmap =&quot;rainbow&quot;,clevs= None,add_colorbar = True,title = None,title_fontsize = 8,colorbar_location = None,clip = None, extend = None,colorbar_location = None,alpha=1)</strong>&lt;/font&gt;<br /> 将网格数据绘制成填色图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;grd&lt;/font&gt;</strong></td> <td style="text-align: left;">网格数据,只能包含一层</td> </tr> <tr> <td style="text-align: left;"><strong>cmap</strong></td> <td style="text-align: left;">字符或者matplotlib 的cm对象。 缺省值&quot;rainbow&quot;对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如&quot;rainbow&quot;,&quot;bwr&quot;等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考<a href="https://www.showdoc.com.cn/meteva?page_id=3975606661430140">meb.def_cmap_clevs函数说明</a></td> </tr> <tr> <td style="text-align: left;"><strong>clevs</strong></td> <td style="text-align: left;">填色的等级设置,取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>add_colorbar</strong></td> <td style="text-align: left;">是否为子图添加colorbar</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>clip</strong></td> <td style="text-align: left;">白化的参数,可以是&quot;china&quot;,或省份名称的拼音,山西的拼音采用&quot;shanxi&quot;, 陕西的拼音采用&quot;shaanxi&quot;.该参数也可以是用于记录闭合线的三层嵌套列表(见下文示例)</td> </tr> <tr> <td style="text-align: left;"><strong>extend</strong></td> <td style="text-align: left;">extend 参数用于控制 colorbar 的扩展端口的外观,用法和matplotlib中一致,默认值为&quot;neither&quot; ,即colorbar两端都是方的。extend = &quot;both&quot;时,colorbar 的两端都是尖的。extend = &quot;min&quot;时,colorbar 的最小值一端是尖的。extend = &quot;max&quot;时,colorbar 的最大值一端是尖的</td> </tr> <tr> <td style="text-align: left;"><strong>colorbar_location</strong></td> <td style="text-align: left;">colorbar的位置,默认情况下程序自动确定colorbar的位置,需要自定义的时候使用该参数,参数的取值为列表,内容为[x,y,width,height],代表colorbar的起始位置和宽高,示例为 colorbar_location = [0.8,0.1,0.05,0.6]</td> </tr> <tr> <td style="text-align: left;"><strong>alpha</strong></td> <td style="text-align: left;">添加的图层的透明度</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">子图对应的image</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">h500 = meb.read_griddata_from_gds_file(r&amp;quot;H:\test_data\input\meb\plot_adv\H500_22052708.000&amp;quot;) h500 = meb.smooth(h500,1)</code></pre> <pre><code class="language-python">map_extend = [70,140,15,55] axs,minaxs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;], sup_fontsize = 8,wspace=1,add_minmap=&amp;quot;right&amp;quot;) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1,extend = &amp;quot;max&amp;quot;) image = meb.add_contourf(axs[1],h500,cmap = &amp;quot;rainbow&amp;quot;,clevs = np.arange(540,600,4),add_colorbar=True,extend = &amp;quot;both&amp;quot;) image = meb.add_scatter(minaxs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=False,alpha=1) image = meb.add_contourf(minaxs[1],h500,cmap = &amp;quot;rainbow&amp;quot;,clevs = np.arange(540,600,4),add_colorbar=False) </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0d92ee63cabeae7b50098cef439ebaea&amp;amp;file=file.png" alt="" /></p> <p>在上面的示例中,设置了在右侧添加南海小地图,因此返回两个绘图框列表,在绘制图层时,也需要为小地图添加图层,并且需要保持大绘图框和小绘图框使用的cmap和clevs的参数完全一致。</p> <h1>添加等值线图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_contour(ax,grd,color='k', linewidth = 1,label_fontsize = 5,clevs = None,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 将网格数据绘制成填色图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;grd&lt;/font&gt;</strong></td> <td style="text-align: left;">网格数据,只能包含一层</td> </tr> <tr> <td style="text-align: left;"><strong>color</strong></td> <td style="text-align: left;">等值线的颜色,若cmap不为空时起作用</td> </tr> <tr> <td style="text-align: left;"><strong>linewidth</strong></td> <td style="text-align: left;">等值线线宽</td> </tr> <tr> <td style="text-align: left;"><strong>label_fontsize</strong></td> <td style="text-align: left;">等值线数值标注字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>clevs</strong></td> <td style="text-align: left;">等值线的等级设置,取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">子图对应的image</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">map_extend = [70,140,15,55] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;, add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8,wspace = 0.8,add_minmap=False) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4)) image = meb.add_contour(axs[1],h500,linewidth = 0.5,clevs = np.arange(400,600,4))</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0371587dac1294094b00b852ab6061b8" alt="" /></p> <h1>添加马赛克图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_mesh(ax,grd,color='k', linewidths = 1,label_fontsize = 5,clevs = None,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 将网格数据绘制成马赛克图。</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;grd&lt;/font&gt;</strong></td> <td style="text-align: left;">网格数据,只能包含一层</td> </tr> <tr> <td style="text-align: left;"><strong>cmap</strong></td> <td style="text-align: left;">字符或者matplotlib 的cm对象。 缺省值&quot;rainbow&quot;对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如&quot;rainbow&quot;,&quot;bwr&quot;等等,具体可以参考https://matplotlib.org/tutorials/colors/colormaps.html, 另外则是meteva定义的一些和预报检验有关的一些配色方案,具体可参考<a href="https://www.showdoc.com.cn/meteva?page_id=3975606661430140">meb.def_cmap_clevs函数说明</a></td> </tr> <tr> <td style="text-align: left;"><strong>clevs</strong></td> <td style="text-align: left;">填色的等级设置,取值为列表或一维nump数值</td> </tr> <tr> <td style="text-align: left;"><strong>add_colorbar</strong></td> <td style="text-align: left;">是否为子图添加colorbar</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">子图对应的image</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">rh850 = meb.read_griddata_from_gds_file(r&amp;quot;H:\test_data\input\meb\plot_adv\RH850_22052708.000&amp;quot;)</code></pre> <pre><code class="language-python">map_extend = [70,140,15,55] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;, add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8,wspace = 1,add_minmap=False) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4)) image = meb.add_mesh(axs[1],rh850,cmap = meb.cmaps.rh,clevs = np.arange(0,101,10),add_colorbar=True)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=3975e7bb06b68350cf10e0002c641290" alt="" /></p> <h1>添加风羽图图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_barbs(ax,wind,color = &quot;k&quot;,skip = None,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 将网格风场数据绘制成风羽图。 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;wind&lt;/font&gt;</strong></td> <td style="text-align: left;">网格风场数据,只能包含一层</td> </tr> <tr> <td style="text-align: left;"><strong>color</strong></td> <td style="text-align: left;">风羽颜色</td> </tr> <tr> <td style="text-align: left;"><strong>skip</strong></td> <td style="text-align: left;">稀疏的比例,缺省时为自动</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">子图对应的image</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">wind850 = meb.read_gridwind_from_gds_file(r&amp;quot;H:\test_data\input\meb\plot_adv\WIND850_22052708.000&amp;quot;)</code></pre> <pre><code class="language-python">map_extend = [100,140,15,55] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8,wspace=1) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4)) image = meb.add_mesh(axs[1],rh850,cmap = meb.cmaps.rh,clevs = np.arange(0,101,10),add_colorbar=True) image = meb.add_barbs(axs[1],wind850,color = &amp;quot;b&amp;quot;,skip = 5) image = meb.add_contour(axs[1],h500,linewidth = 0.5,clevs = np.arange(400,600,4))</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8c7ed00701d0741c5c988ca484900c84" alt="" /></p> <h1>添加落区等值线图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_closed_line(ax,graphy,color = &quot;k&quot;,linewidth=2,fontsize = 10,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 将micaps14类格式中手工绘制的落区绘制成等值线。 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;graphy&lt;/font&gt;</strong></td> <td style="text-align: left;">从micaps14类格式文件中读取的数据,其中包含了落区闭合等值线</td> </tr> <tr> <td style="text-align: left;"><strong>color</strong></td> <td style="text-align: left;">线条颜色</td> </tr> <tr> <td style="text-align: left;"><strong>linewidth</strong></td> <td style="text-align: left;">等值线线宽</td> </tr> <tr> <td style="text-align: left;"><strong>fontsize</strong></td> <td style="text-align: left;">线条标注的字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">rain_contour = meb.read_micaps14(r&amp;quot;H:\test_data\input\meb\plot_adv\rr052620.024&amp;quot;)</code></pre> <pre><code class="language-python">map_extend = [110,120,20,30] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;,add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 10,wspace=1) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4),color = &amp;quot;b&amp;quot;) image = meb.add_closed_line(axs[0],rain_contour,linewidth = 0.5,fontsize = 5) image = meb.add_mesh(axs[1],rh850,cmap = meb.cmaps.rh,clevs = np.arange(0,101,10),add_colorbar=True) image = meb.add_barbs(axs[1],wind850,color = &amp;quot;k&amp;quot;,skip = 2) image = meb.add_contour(axs[1],h500,linewidth = 1,clevs = np.arange(400,600,4),color = &amp;quot;b&amp;quot;)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=178be184a043fe55bbd633fe6df073a7" alt="" /></p> <h1>添加台风路径图层</h1> <p>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;<strong>add_cyclone_trace(ax,sta_cyclone_trace,size = 0.2,linewidth = 1,title = None,title_fontsize = 8)</strong>&lt;/font&gt;<br /> 绘制台风的轨迹和符号。 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;ax&lt;/font&gt;</strong></td> <td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;sta_cyclone_trace&lt;/font&gt;</strong></td> <td style="text-align: left;">站点形式的台风轨迹数据</td> </tr> <tr> <td style="text-align: left;"><strong>size</strong></td> <td style="text-align: left;">台风符号的大小</td> </tr> <tr> <td style="text-align: left;"><strong>linewidth</strong></td> <td style="text-align: left;">等值线线宽</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">子图标题</td> </tr> <tr> <td style="text-align: left;"><strong>title_fontsize</strong></td> <td style="text-align: left;">子图标题字体大小</td> </tr> <tr> <td style="text-align: left;"><strong>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;return&lt;/font&gt;</strong></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例:</strong></p> <pre><code class="language-python">filename = r&amp;quot;H:\test_data\input\meb\babj_2106.dat&amp;quot; #设置台风路径文件 sta1 = meb.read_cyclone_trace(filename,id_cyclone = 2106) #读取台风路径数据(包括定位和预报) trace_ob = meb.sele_by_para(sta1,dtime = 0) #提取其中定位数据部分(观测)speed_all</code></pre> <pre><code class="language-python">map_extend = [100,140,20,45] axs = meb.creat_axs(1,map_extend,sup_title = &amp;quot;500hPa高度场和台风轨迹&amp;quot;) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4),color = &amp;quot;k&amp;quot;) meb.add_cyclone_trace(axs[0],trace_ob)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8d360a8cbbe8f66c5528f7114ee1531f" alt="" /></p> <h1>将图形数据保持至图片</h1> <p>调用matplotlib的pyplot将图形保存至图片</p> <pre><code class="language-python">map_extend = [70,140,15,55] axs = meb.creat_axs(2,map_extend,ncol = 2,sup_title = &amp;quot;2022年5月27日降水和形势场&amp;quot;, add_index = [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],sup_fontsize = 8,wspace = 0.8,add_minmap=False) image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1) image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4)) image = meb.add_mesh(axs[1],rh850,cmap = meb.cmaps.rh,clevs = np.arange(0,101,10),add_colorbar=True) plt.savefig(r&amp;quot;H:\test_data\output\meb\a.png&amp;quot;,bbox_inches='tight') # 'tight'表示将图形周围白边最小化 print(&amp;quot;图片成功保持至&amp;quot; + r&amp;quot;H:\test_data\output\meb\a.png&amp;quot;)</code></pre> <pre><code>图片成功保持至H:\test_data\output\meb\a.png</code></pre>

页面列表

ITEM_HTML