图形检验产品
<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>
<h1>等级柱状图</h1>
<p><strong><font face="黑体" color=blue size = 5>rank_histogram(ob,fo,vmax = None,save_path= None,show = False,dpi = 300,title = "排序柱状图",sup_fontsize=10, width=None, height=None)</font></strong><br />
反映集合预报的发散时候和其不确定性一致。设集合成员数为M,则对每一个观测样本,将其和M个预报构成M+1的序列从小到大排序,记录观测值在其中的排序的序号i。i的取值范围为0到M,统计所有观测样本的排序序号出现的频次占总样本数的比例,绘制成图。x轴为观测值在集合序列中的排序序号,y轴为每种序号所占的样本比例 </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;">比Ob.shape多一维或者保持一致,Fo.shape低维与ob.shape保持一致</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 × 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>
<pre><code class="language-python">sample_count = 1000
member_count = 50
ob = 0.003 * np.arange(sample_count) #生成一批观测样本数据
#设观测值随机出现在集合平均的周围,误差标准差为1
ensemble_mean = ob + np.random.randn(sample_count)
fo = np.zeros((member_count,sample_count))
for i in range(member_count):
#集合成员随机出现在集合平均的周围,集合发散标准差为0.5
fo[i,:] = ensemble_mean + np.random.randn(sample_count) * 0.5
mem.rank_histogram(ob,fo)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/afdf6ab17caae23a20a0e9b477479958" alt="" /></p>
<p>在上述示例中,集合预报的发散度小于集合预报的误差标准差,排序柱状图总体呈现U型分布。如果集合预报的发散度大于集合预报的预报标准差,排序柱状图将程序倒U型分布,如下面的示例所示:</p>
<pre><code class="language-python">for i in range(member_count):
#集合成员随机出现在集合平均的周围,集合发散标准差为2
fo[i,:] = ensemble_mean + np.random.randn(sample_count) * 2
mem.rank_histogram(ob,fo)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/6a18b0ce985f5eb1643f56809399b1db" alt="" /></p>
<h1>频率对比箱须图</h1>
<p><strong><font face="黑体" color=blue size = 5>box_plot_ensemble(ob, fo,vmax = None,vmin = None,member_list = None, save_path=None,show = False,dpi = 300,title ="频率对比箱须图",sup_fontsize=10, width=None, height=None)</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>vmax</strong></td>
<td style="text-align: left;">绘图窗口y轴方向最大值,通常在绘制单张图形时无需设置,在批量绘制多张该检验图时为了方便保持不同图片之间的可对比性,可以统一设置该参数</td>
</tr>
<tr>
<td style="text-align: left;"><strong>vmin</strong></td>
<td style="text-align: left;">绘图窗口y轴方向最小值,通常在绘制单张图形时无需设置,在批量绘制多张该检验图时为了方便保持不同图片之间的可对比性,可以统一设置该参数</td>
</tr>
<tr>
<td style="text-align: left;"><strong>member_list</strong></td>
<td style="text-align: left;">预报成员的名称列表</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>
<pre><code class="language-python">mem.box_plot_ensemble(ob,fo,save_path = r"H:\test_data\output\method\ensemble\box.png",show = True)</code></pre>
<pre><code>检验结果已以图片形式保存至H:\test_data\output\method\ensemble\box.png</code></pre>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f1d0c43d167c912253c57a7af32e6236?showdoc=.jpg" alt="" /></p>
<pre><code class="language-python"></code></pre>