多图层绘制
<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><font face="黑体" color=blue size = 5><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></font><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><font face="黑体" color=blue size = 5>nplot</font></strong></td>
<td style="text-align: left;">待创建的平面图中包含nplot个子图</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>map_extend</font></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;">是否添加南海小地图,该参数取值为"left"时小地图在左侧,"right"时小地图在右侧,取值为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><font face="黑体" color=blue size = 5>return</font></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 = &quot;2022年1月1日形势场&quot;,add_index = [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&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 = &quot;2022年1月1日形势场&quot;,add_index = [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;],
sup_fontsize = 8,add_minmap=&quot;left&quot;)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a15f20b3d0d767fd5ca7f6b17dec2097" alt="" /></p>
<h1>添加散点文字图层</h1>
<p><font face="黑体" color=blue size = 5><strong>def add_scatter_text(ax,sta0,color = "k",cmap = None,clevs = None,tag = 2,
alpha = 1,font_size = 10,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta</font></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对象。 缺省值"rainbow"对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如"rainbow","bwr"等等,具体可以参考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><font face="黑体" color=blue size = 5>return</font></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&quot;H:\test_data\input\meb\plot_adv\RAIN24H_22052720.000&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 = &quot;2022年5月27日降水观测&quot;,add_index = [&quot;a&quot;,&quot;b&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><font face="黑体" color=blue size = 5><strong>add_scatter(ax,sta,cmap = "rainbow",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></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta</font></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对象。 缺省值"rainbow"对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如"rainbow","bwr"等等,具体可以参考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中一致,默认值为"neither" ,即colorbar两端都是方的。extend = "both"时,colorbar 的两端都是尖的。extend = "min"时,colorbar 的最小值一端是尖的。extend = "max"时,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><font face="黑体" color=blue size = 5>return</font></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 = &quot;2022年5月27日降水观测&quot;,add_index = [&quot;a&quot;,&quot;b&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><font face="黑体" color=blue size = 5><strong>add_contourf(ax,grd,cmap ="rainbow",clevs= None,add_colorbar = True,title = None,title_fontsize = 8,colorbar_location = None,clip = None,
extend = None,colorbar_location = None,alpha=1)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd</font></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对象。 缺省值"rainbow"对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如"rainbow","bwr"等等,具体可以参考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;">白化的参数,可以是"china",或省份名称的拼音,山西的拼音采用"shanxi", 陕西的拼音采用"shaanxi".该参数也可以是用于记录闭合线的三层嵌套列表(见下文示例)</td>
</tr>
<tr>
<td style="text-align: left;"><strong>extend</strong></td>
<td style="text-align: left;">extend 参数用于控制 colorbar 的扩展端口的外观,用法和matplotlib中一致,默认值为"neither" ,即colorbar两端都是方的。extend = "both"时,colorbar 的两端都是尖的。extend = "min"时,colorbar 的最小值一端是尖的。extend = "max"时,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><font face="黑体" color=blue size = 5>return</font></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&quot;H:\test_data\input\meb\plot_adv\H500_22052708.000&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 = &quot;2022年5月27日降水和形势场&quot;,add_index = [&quot;a&quot;,&quot;b&quot;],
sup_fontsize = 8,wspace=1,add_minmap=&quot;right&quot;)
image = meb.add_scatter(axs[0],rain24,cmap = meb.cmaps.rain_24h,add_colorbar=True,alpha=1,extend = &quot;max&quot;)
image = meb.add_contourf(axs[1],h500,cmap = &quot;rainbow&quot;,clevs = np.arange(540,600,4),add_colorbar=True,extend = &quot;both&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 = &quot;rainbow&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;file=file.png" alt="" /></p>
<p>在上面的示例中,设置了在右侧添加南海小地图,因此返回两个绘图框列表,在绘制图层时,也需要为小地图添加图层,并且需要保持大绘图框和小绘图框使用的cmap和clevs的参数完全一致。</p>
<h1>添加等值线图层</h1>
<p><font face="黑体" color=blue size = 5><strong>add_contour(ax,grd,color='k', linewidth = 1,label_fontsize = 5,clevs = None,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd</font></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><font face="黑体" color=blue size = 5>return</font></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 = &quot;2022年5月27日降水和形势场&quot;,
add_index = [&quot;a&quot;,&quot;b&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><font face="黑体" color=blue size = 5><strong>add_mesh(ax,grd,color='k', linewidths = 1,label_fontsize = 5,clevs = None,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd</font></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对象。 缺省值"rainbow"对应彩虹色方案。 当cmap为字符时支持两种情况,一种是matplotlib 能够识别的字符串,例如"rainbow","bwr"等等,具体可以参考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><font face="黑体" color=blue size = 5>return</font></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&quot;H:\test_data\input\meb\plot_adv\RH850_22052708.000&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 = &quot;2022年5月27日降水和形势场&quot;,
add_index = [&quot;a&quot;,&quot;b&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>
<h2>添加凤羽图图层</h2>
<p><font face="黑体" color=blue size = 5><strong>add_barbs(ax,wind,color = "k",skip = None,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>wind</font></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><font face="黑体" color=blue size = 5>return</font></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&quot;H:\test_data\input\meb\plot_adv\WIND850_22052708.000&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 = &quot;2022年5月27日降水和形势场&quot;,add_index = [&quot;a&quot;,&quot;b&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 = &quot;b&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>
<h2>添加流线图层</h2>
<p><font face="黑体" color=blue size = 5><strong>add_streamplot(ax,wind,color = "k",title = None,title_fontsize = 8,density= 1,linewidth = 1)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>wind</font></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>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>density</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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">子图对应的image</td>
</tr>
</tbody>
</table>
<h2>添加彗星效果图层</h2>
<p><font face="黑体" color=blue size = 5><strong>add_meteor(ax,grd_wind,skip = 5,meteor_length = 1,meteor_width = 1,cmap = "viridis")</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>wind</font></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>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>skip</strong></td>
<td style="text-align: left;">稀疏的比例,控制彗星的数量</td>
</tr>
<tr>
<td style="text-align: left;"><strong>meteor_length</strong></td>
<td style="text-align: left;">彗星的长度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>meteor_width</strong></td>
<td style="text-align: left;">彗星头的宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>cmap</strong></td>
<td style="text-align: left;">彗星尾部到头部的渐变色方案</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">子图对应的image</td>
</tr>
</tbody>
</table>
<h2>添加流星动画</h2>
<p><font face="黑体" color=blue size = 5><strong>add_animation(ax,grd_wind,skip = 5,meteor_length = 1,meteor_width = 1,cmap = "viridis")</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>wind</font></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>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>skip</strong></td>
<td style="text-align: left;">稀疏的比例,控制彗星的数量</td>
</tr>
<tr>
<td style="text-align: left;"><strong>meteor_length</strong></td>
<td style="text-align: left;">彗星的长度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>meteor_width</strong></td>
<td style="text-align: left;">彗星头的宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>cmap</strong></td>
<td style="text-align: left;">彗星尾部到头部的渐变色方案</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">动画对象animation</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">map_extend = [100,140,15,55]
axs = meb.creat_axs(4,map_extend,ncol = 2,sup_title = &quot;不同形式的风场&quot;,add_index = [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;],sup_fontsize = 8,wspace=1)
image = meb.add_barbs(axs[0],wind850,color = &quot;k&quot;,skip = 5)
image = meb.add_streamplot(axs[1],wind850,color = &quot;k&quot;)
image = meb.add_meteor(axs[2],wind850,skip = 10,meteor_width = 2,cmap = &quot;rainbow&quot;)
ani = meb.add_animation(axs[3],wind850,skip = 10,meteor_width = 2,cmap = &quot;rainbow&quot;)
# 使用 PillowWriter 保存为 GIF
from matplotlib.animation import PillowWriter # 导入 PillowWriter
writer = PillowWriter(fps=25) # 设置合适的帧率
ani.save(r&quot;H:\test_data\output\meb\a.gif&quot;, writer=writer) </code></pre>
<p>本网站不能显示动画效果,下面是静态图的效果</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=fb47b88d0f53d18c8fec5c4e7f405a84&amp;file=file.png" alt="" /></p>
<h1>添加落区等值线图层</h1>
<p><font face="黑体" color=blue size = 5><strong>add_closed_line(ax,graphy,color = "k",linewidth=2,fontsize = 10,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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><font face="黑体" color=blue size = 5>return</font></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&quot;H:\test_data\input\meb\plot_adv\rr052620.024&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 = &quot;2022年5月27日降水和形势场&quot;,add_index = [&quot;a&quot;,&quot;b&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 = &quot;b&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 = &quot;k&quot;,skip = 2)
image = meb.add_contour(axs[1],h500,linewidth = 1,clevs = np.arange(400,600,4),color = &quot;b&quot;)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=178be184a043fe55bbd633fe6df073a7" alt="" /></p>
<h1>添加台风路径图层</h1>
<p><font face="黑体" color=blue size = 5><strong>add_cyclone_trace(ax,sta_cyclone_trace,size = 0.2,linewidth = 1,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_cyclone_trace</font></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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">filename = r&quot;H:\test_data\input\meb\babj_2106.dat&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 = &quot;500hPa高度场和台风轨迹&quot;)
image = meb.add_contour(axs[0],h500,linewidth = 0.5,clevs = np.arange(400,600,4),color = &quot;k&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>
<h2>添加单实线</h2>
<p><font face="黑体" color=blue size = 5><strong>add_solid_lines(ax,graphy,color = "r",linewidth = None,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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>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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<h2>添加双实线</h2>
<p><font face="黑体" color=blue size = 5><strong>add_double_solid_lines(ax,graphy,linewidth = 1,line_inter = 2,title = None,title_fontsize = 8,line_color = None)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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>linewidth</strong></td>
<td style="text-align: left;">线宽</td>
</tr>
<tr>
<td style="text-align: left;"><strong>line_inter</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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<h2>添加箭头</h2>
<p><font face="黑体" color=blue size = 5><strong>add_curved_arrows(ax,graphy,color = "red",linewidth = None,head_width = 1,head_length = 1,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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>linewidth</strong></td>
<td style="text-align: left;">箭头尾部曲线部分线宽</td>
</tr>
<tr>
<td style="text-align: left;"><strong>head_width</strong></td>
<td style="text-align: left;">箭头的头部宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>head_length</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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<h2>添加冷锋</h2>
<p><font face="黑体" color=blue size = 5><strong>add_cold_fronts(ax,graphy,color = "b",linewidth = None,
triangle_step = 10,triangle_size = 1,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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>linewidth</strong></td>
<td style="text-align: left;">锋线宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>triangle_step</strong></td>
<td style="text-align: left;">锋线上三角形的间隔</td>
</tr>
<tr>
<td style="text-align: left;"><strong>triangle_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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<h2>添加暖锋</h2>
<p><font face="黑体" color=blue size = 5><strong>add_warm_fronts(ax,graphy,color = "r",linewidth = None,
semicircle_step = 10,semicircle_size = 1,title = None,title_fontsize = 8)</strong></font><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><font face="黑体" color=blue size = 5>ax</font></strong></td>
<td style="text-align: left;">Matplotlib的axes 类变量,用于指定为那个子图添加图层</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>graphy</font></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>linewidth</strong></td>
<td style="text-align: left;">锋线宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>semicircle_step</strong></td>
<td style="text-align: left;">锋线上半圆形的间隔</td>
</tr>
<tr>
<td style="text-align: left;"><strong>semicircle_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><font face="黑体" color=blue size = 5>return</font></strong></td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">graphy = [
[
[117.103,34.503],[117.201,34.424],[117.295,34.341],[117.384,34.255],
[117.468,34.165],[117.547,34.071],[117.621,33.974],[117.691,33.873],
[117.756,33.769],[117.816,33.661],[117.902,33.482],[117.975,33.296],
[118.035,33.104],[118.081,32.908],[118.112,32.709],[118.129,32.509],
[118.129,32.311],[118.113,32.115],[118.080,31.923],[118.017,31.699],
[117.931,31.482],[117.826,31.273],[117.702,31.072],[117.565,30.876],
[117.415,30.687],[117.256,30.503],[117.090,30.324],[116.921,30.149],
[116.743,29.972],[116.564,29.799],[116.383,29.630],[116.200,29.466],
[116.016,29.306],[115.829,29.150],[115.640,28.999],[115.447,28.852],
[115.252,28.709],[114.953,28.502],[114.647,28.306],[114.333,28.118],
[114.013,27.941],[113.685,27.773],[113.350,27.615],[113.008,27.467]
],
[
[113.437,24.013],[113.708,24.178],[113.980,24.342],[114.377,24.583],
[114.772,24.825],[115.167,25.066],[115.561,25.308],[115.954,25.551],
[116.346,25.793],[116.738,26.036],[117.129,26.279],[117.520,26.523],
[117.911,26.766],[118.301,27.010],[118.691,27.253],[119.081,27.497]
],
]</code></pre>
<pre><code class="language-python">map_extend = [110,120,20,40]
axs = meb.creat_axs(5,map_extend,ncol = 5,sup_title = &quot;特征线&quot;,sup_fontsize=8,xticks_inter = 10,yticks_inter = 10)
meb.add_solid_lines(axs[0],graphy,color = &quot;brown&quot;,linewidth=4)
meb.add_double_solid_lines(axs[1],graphy,color = &quot;red&quot;,linewidth=1)
meb.add_curved_arrows(axs[2],graphy,color = &quot;blue&quot;,linewidth=1)
meb.add_cold_fronts(axs[3],graphy,color = &quot;blue&quot;,linewidth=1)
meb.add_warm_fronts(axs[4],graphy,color = &quot;red&quot;,linewidth=1)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c361b5500fa5776867c471706bdb0589&amp;file=file.png" 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 = &quot;2022年5月27日降水和形势场&quot;,
add_index = [&quot;a&quot;,&quot;b&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&quot;H:\test_data\output\meb\a.png&quot;,bbox_inches='tight') # 'tight'表示将图形周围白边最小化
print(&quot;图片成功保持至&quot; + r&quot;H:\test_data\output\meb\a.png&quot;)</code></pre>
<pre><code>图片成功保持至H:\test_data\output\meb\a.png</code></pre>