获取矩阵的百分位数 95,然后绘制它

Obtaining the percentile 95 of a matrix and then plotting it

编辑: 我被要求添加更多细节。原来我有一个360x180的矩阵,里面有E-P值的数据,这些值代表蒸发(E)和降水(P),它们基本上表示水分的来源(E-P> 0)和汇(E-P <0) .为了获得最重要的水分来源,我只需要取正值,我想获得这些值的百分位数 95,然后绘制高于该阈值的值,因为我想做一个可重现的例子使用了 peaks 数据:

我已经在 MATLAB 中完成了这个,但如果它可以在 R 上完成,它也适用于我。

我有一个这样的 49x49 矩阵示例:

a = peaks; 
pcolor(a);
caxis([-10 10]); 
cbh=colorbar('v');
set(cbh,'YTick',(-10:1:10))

它显示了这样的东西

我想做的是仅获取正值的百分位数 95,然后绘制它们。

我该怎么做?还有,更好的方法是:用 0 或 Nan 替换所有小于零的值??

如果你有统计工具箱,可以使用函数prctile to obtain a percentile. I don't have this toolbox, so I wrote my own version (a long time ago) based on the code for the function median。使用 prctilepercentile 您可以:

a = peaks;
t = percentile(a(a>0),95);
b = a > t;

subplot(1,2,1)
pcolor(a);
subplot(1,2,2)
pcolor(b);

a(a>0) 是一个包含 a 中所有正值的向量。 t 是该向量的第 95 个百分位数。