meteva

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


图形检验产品

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.method as mem import numpy as np</code></pre> <pre><code>The autoreload extension is already loaded. To reload it, use: %reload_ext autoreload</code></pre> <p><strong><em>通过随机函数生成测试数据,用于后续检验函数调用示例</em></strong></p> <pre><code class="language-python">ob = (np.random.rand(20) * 10).astype(np.int8) fo = (np.random.rand(8,20) * 10).astype(np.int8) grade_list = [3,5]</code></pre> <pre><code class="language-python">ob</code></pre> <pre><code>array([6, 5, 4, 0, 4, 8, 7, 0, 6, 8, 1, 7, 9, 4, 9, 7, 9, 7, 6, 5], dtype=int8)</code></pre> <pre><code class="language-python">fo</code></pre> <pre><code>array([[0, 3, 8, 5, 0, 6, 4, 3, 8, 2, 3, 3, 2, 5, 5, 6, 1, 8, 8, 8], [5, 5, 7, 0, 5, 0, 1, 7, 0, 1, 1, 1, 8, 9, 3, 4, 5, 5, 3, 8], [4, 4, 6, 2, 1, 0, 4, 0, 1, 3, 6, 5, 3, 2, 7, 8, 2, 1, 9, 7], [7, 6, 6, 2, 0, 0, 7, 8, 7, 1, 7, 1, 8, 8, 7, 8, 4, 2, 7, 8], [0, 0, 5, 5, 1, 9, 6, 8, 2, 2, 4, 7, 7, 4, 3, 4, 6, 2, 1, 6], [2, 7, 6, 3, 2, 2, 0, 4, 8, 0, 9, 5, 6, 4, 1, 2, 0, 8, 2, 5], [5, 2, 3, 9, 7, 7, 5, 2, 6, 3, 9, 8, 2, 0, 5, 4, 3, 6, 2, 2], [5, 4, 8, 2, 1, 3, 2, 6, 6, 2, 2, 6, 4, 7, 0, 9, 2, 4, 8, 4]], dtype=int8)</code></pre> <h1>频率统计图</h1> <p><strong><font face="黑体" color=blue size = 3>frequency_histogram(ob, fo,grade_list=None, member_list=None, vmax = None,save_path=None,show = False,dpi = 300,plot = &quot;bar&quot;, title=&quot;频率统计图&quot;, sup_fontsize = 10,width = None,height = None,log_y = False)</font></strong><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>ob</font></strong></td> <td style="text-align: left;">实况数据, 任意维numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size=5>fo</font></strong></td> <td style="text-align: left;">预测数据, 任意维numpy数组,Fo.shape 比Ob.shape多一维或者保持一致,Fo.shape低维与ob.shape保持一致</td> </tr> <tr> <td style="text-align: left;"><strong>grade_list</strong></td> <td style="text-align: left;">如果该参数为None,观测或预报值出现过的值都作为分类标记,如果该参数不为None,它必须是一个从小到大排列的实数,以其中列出的数值划分出的多个区间作为分类标签。对于预报和观测值不为整数的情况,grade_list 不能设置为None</td> </tr> <tr> <td style="text-align: left;"><strong>member_list</strong></td> <td style="text-align: left;">个预报成员的名称列表,缺省时系统由自动生成,将在bar图的legend中显示</td> </tr> <tr> <td style="text-align: left;"><strong>vmax</strong></td> <td style="text-align: left;">绘图窗口y轴方向最大值,通常在绘制单张图形时无需设置,在批量绘制多张该检验图时为了方便保持不同图片之间的可对比性,可以统一设置该参数</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">绘图所采用dpi参数,效果同matplotlib中dpi参数</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>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>width</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>log_y</strong></td> <td style="text-align: left;">y轴是否采用对数坐标</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">mem.frequency_histogram(ob, fo[0,:],member_list = ["ECMWF"]) # 输入的预报和观测shape一致</code></pre> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/4fd7b121fb2d9892d2268e953bc52894?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">mem.frequency_histogram(ob, fo) #预报比观测高出一维,未设置member_list 时自动生成</code></pre> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/ad8fc704626dae842130ec278fb3cb65?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">#指定了多分类等级划分方式 mem.frequency_histogram(ob, fo,grade_list = grade_list, save_path = r"H:\test_data\output\method\multi_catagory\bar3.png",show = True)</code></pre> <pre><code>检验结果已以图片形式保存至H:\test_data\output\method\multi_catagory\bar3.png</code></pre> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f44787e720935c831869717f9556b097?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">ob = np.random.randn(200) * 3 fo = np.random.randn(3,200) * 3 mem.frequency_histogram(ob, fo,grade_list = np.arange(-10,10),show = True,log_y = True) #当分级的数量非常多时,不再采用[3,5)类似的区间描述作为横坐标的刻度, #而是将条柱绘制在区间中间(例如0和1中间)的方式来表示某个区间的样本数。 #另外可以设置log_y = True 来选择对数坐标。样本比例为0的则不会被显示。 </code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/dad6cef54dee1fe5c4e3eff4eb4694e9" alt="" /></p> <h1>分级综合检验图</h1> <p><strong><font face="黑体" color=blue size = 5> performance_grade(ob, fo, grade_list=None, member_list=None, x_y=&quot;sr_pod&quot;, save_path=None, show=False,dpi=300, title=&quot;综合表现图&quot;, sup_fontsize=10, width=None, height=None)</font></strong><br /> 绘制分级检验的综合检验图,将根据分级检验技术的ts_grade,bias_grade,pod_grade,sr_grade, 或 far_grade,mr_grade 指标在一张平面图上呈现,其形式和二分类预报综合检验图样式一致。 </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>ob</font></strong></td> <td style="text-align: left;">实况数据, 任意维numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size=5>fo</font></strong></td> <td style="text-align: left;">预测数据, 任意维numpy数组,Fo.shape 比Ob.shape多一维或者保持一致,Fo.shape低维与ob.shape保持一致</td> </tr> <tr> <td style="text-align: left;"><strong>grade_list</strong></td> <td style="text-align: left;">阈值列表</td> </tr> <tr> <td style="text-align: left;"><strong>member_list</strong></td> <td style="text-align: left;">各预报成员的名称列表,缺省时系统由自动生成,将在bar图的legend中显示</td> </tr> <tr> <td style="text-align: left;"><strong>x_y</strong></td> <td style="text-align: left;">xy轴坐标,缺省情况下会以成功率_命中率作为横_纵坐标,当x_y = &quot;far_mr&quot;时坐标会切换成空报率_漏报率</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">绘图所采用dpi参数,效果同matplotlib中dpi参数</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>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize × 0.9, 坐标刻度的字体大小 = sup_fontsize × 0.8</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>height</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">grade_list = [-3,-1,1,3] mem.performance_grade(ob,fo,grade_list = grade_list)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/259ecf8692a83dae70003748bff0c5dd" alt="" /></p> <h1>分类综合检验图</h1> <p><strong><font face="黑体" color=blue size = 5> performance_grade(ob, fo, grade_list=None, member_list=None, x_y=&quot;sr_pod&quot;, save_path=None, show=False,dpi=300, title=&quot;综合表现图&quot;, sup_fontsize=10, width=None, height=None)</font></strong><br /> 绘制多分类预报的综合检验图,将多分类预报的ts_multi,bias_multi,pod_multi,sr_multi, 或 far_multi,mr_multi指标在一张平面图上呈现,其形式和二分类预报综合检验图样式一致。 </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>ob</font></strong></td> <td style="text-align: left;">实况数据, 任意维numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size=5>fo</font></strong></td> <td style="text-align: left;">预测数据, 任意维numpy数组,Fo.shape 比Ob.shape多一维或者保持一致,Fo.shape低维与ob.shape保持一致</td> </tr> <tr> <td style="text-align: left;"><strong>grade_list</strong></td> <td style="text-align: left;">阈值列表</td> </tr> <tr> <td style="text-align: left;"><strong>member_list</strong></td> <td style="text-align: left;">各预报成员的名称列表,缺省时系统由自动生成,将在bar图的legend中显示</td> </tr> <tr> <td style="text-align: left;"><strong>x_y</strong></td> <td style="text-align: left;">xy轴坐标,缺省情况下会以成功率_命中率作为横_纵坐标,当x_y = &quot;far_mr&quot;时坐标会切换成空报率_漏报率</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">图片保存路径,缺省时不输出图片,而是以默认绘图窗口形式展示</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕显示图片,如果save_path 和save_dir 为都None时,程序内部会自动将show设置True</td> </tr> <tr> <td style="text-align: left;"><strong>dpi</strong></td> <td style="text-align: left;">绘图所采用dpi参数,效果同matplotlib中dpi参数</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>sup_fontsize</strong></td> <td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize × 0.9, 坐标刻度的字体大小 = sup_fontsize × 0.8</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>height</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">mem.performance_multi(ob,fo,grade_list = grade_list) # 请注意其结果和 performance_grade的差别</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/5d5b162a52100144076f211e0e0a3e71" alt="" /></p>

页面列表

ITEM_HTML