pcolor
伪彩图
语法
pcolor(C)
pcolor(X,Y,C)
pcolor(ax,___)
s = pcolor(___)
说明
示例
pcolor(C)使用矩阵C在值中创建伪彩图。伪彩图以彩色单元(称为面)矩阵数据显示阵列形式。MATLAB?在 x-y 在平面上创建一个单一的着色平面图。该平面由对应于各面的角度(即顶点) x 坐标和 y 网格定义坐标。网格覆盖区域X=1:n和Y=1:m,其中[m,n] = size(C)。矩阵C指定顶点的颜色。每个表面的颜色取决于四个周围顶点之一的颜色。在这四个顶点中,x-y 网格的第一个顶点决定了表面的颜色。
示例
pcolor(X,Y,C)指定顶点的 x 坐标和 y 坐标。C大小必须与 x-y 匹配坐标网格的大小。例如,如果X和Y定义一个 m×n 网格,则C必须为 m×n 矩阵。
示例
pcolor(ax,___)指定绘图的目标坐标区域。ax作为上述任何语法中的第一个参数。
示例
s = pcolor(___)返回Surface对象。绘图创建后,使用s设置绘图属性。请参阅相关属性列表
matlab案例:
clc; clear; fname='mlotst_Omon_CESM2-WACCM_historical_r2i1p1f1_gr_185001-201412.nc'; ncdisp(fname); %ocean data regridded from native gx1v7 displaced pole grid (384x320 %latxlon) 如果把极点放在真正的南北极点模型产生很大的误差 lat=ncread(fname,'lat');%lat=ncread(fname,'lat,[Inf,Inf,12]) 第一年可以取出Data [long,lat,month] lon=ncread(fname,'lon'); time=ncread(fname,'time'); MLD=ncread(fname,'mlotst'); MLD1=MLD(:,,1); figure(1); pcolor(MLD1); colorbar; shading flat;%pcolor: pixel color %shading faceted:默认模式,黑色网格线叠加在曲面或图形对象上; % shading flat:是在shading faceted去除图上的网格线; % shading interp:插值处理曲面或图形对象的颜色着色,平滑过渡颜色 ; caxis([0 400]); MLDp=permute(MLD1.[2,1,3]);%permute 指交换矩阵中不同维度的数据 这是交换1,2维度 figure(2); pcolor(MLDp);colorbar;shading flat; caxis([0 400]);% 把colorbar的一部分归0 MLD=permute(MLD,[2,1,3]); [x,y,z]=size(MLD); figure(3); vidfile=VideoWriter('MLD_movie.mp4','MPEG-4'); open(vidfile); for ji=1:20 iMLD=MLD(:,:,ji); pcolor(iMLD);colorbar;shading flat; caxis([0 400]);%否则colorbar数值会上下横跳 drawnow; pause(0.1);%去除括号中的数字可以手动切割(用回车) F(ji)=getframe(gcf); writeVideo(vidfile,F(ji)); end close(vidfile); save MLD1850 MLD lat lon;% MLD1850是文件名 %load时同理 箱式图
boxplot
箱线图可视化汇总统计量
语法
boxplot(x)
boxplot(x,g)
boxplot(ax,___)
boxplot(___,Name,Value)
说明
示例
boxplot(x)创建x中数据箱线图。x是向量,boxplot画盒子x是矩阵,boxplot为x每列画一个盒子。
在每个箱子上,中心标记表示中位数,箱子的底部和顶部分别表示第一个 25 个和 75 百分位数。须线将延伸到离群值最远的数据点,离群值将是' '单独绘制符号。
示例
boxplot(x,g)使用g中包含的一个或多个分组变量创建箱线图。boxplot为具有相同的一个或多个g值的各组x创建一个单独的盒子
boxplot(ax,___)使用坐标区的图形对象ax上述语法创建的指定坐标区和箱线图。
示例
boxplot(___,Name,Value)由一个或多个使用Name,Value为组参数指定的附加选项创建箱线图。例如,您可以指定箱式或顺序。
clear all; close all; clc % A = rand(500,1); A = normrnd(5,1,100,1); B = normrnd(5,1,100,1); Y = quantile(A,[0.25,0.5,0.75]); w = 1.0 ; % boxplot([A,B], 'Whisker',w) boxplot(A, 'Whisker',w) q1 = Y(1); q2 = Y(2); q3 = Y(3); text(1.1,q1,'25% percentile') text(1.1,q2,'median') text(1.1,q3,'75% percentile') uwhickler = q3 w * (q3 - q1); dwhickler = q1 - w * (q3 - q1); text(1.1, uwhickler, 'q3 w * (q3 - q1)') text(1.1, dwhickler, 'q1 - w * (q3 - q1)') drawArrow = @(x,y) quiver( x(1),y(1),x(2)-x(1),y(2)-y(1),0 ); 分组绘制箱式图
load MLD1850.mat MLD lat lon [Lat,Lon] = meshgrid(lat,lon) ; MLD=MLD(:,,1); ibig = find(MLD(:) >250); MLD(ibig) = nan; data = [Lat(:), MLD(:)] ; ikp = find(~isnan(sum(data,2)) & ~isinf(sum(data,2))); lat_kp = Lat(ikp); mld_kp = MLD(ikp); figure(1) edges = linspace(min(lat_kp), max(lat_kp), 18); % edges = min(lat_kp):10:max(lat_kp) 5; [N,ibin] = histc(lat_kp,edges); boxplot(mld_kp,ibin) xticks(1:18) xticklabels({'89.5S', '78.97S', '68.44S', '57.91S', '47.38S', '36.85S', ... '26.32S', '15.79S', '5.26S', '5.26N', '15.79N', '26.32N', ... '36.85N', '47.38N', '57.91N', '68.44N', '78.97N', '89.50N'}); for ji = 1:length(N) ikp = find(ibin == ji); ave(ji) = mean(mld_kp(ikp)); stdn(ji) = std(mld_kp(ikp)); end figure(2) inbetween = [1:length(edges), fliplr(1:length(edges))];
inbetweeny = [ave + stdn, fliplr(ave - stdn)];
fill(inbetweenx, inbetweeny,[0.9,0.9,0.9]);
hold on
plot(ave,':r^')
hold off
xticks(1:18)
xticklabels({'89.5S', '78.97S', '68.44S', '57.91S', '47.38S', '36.85S', ...
'26.32S', '15.79S', '5.26S', '5.26N', '15.79N', '26.32N', ...
'36.85N', '47.38N', '57.91N', '68.44N', '78.97N', '89.50N'}); 图像位置的变换 (利用稀疏矩阵)
clc
close all;
clear all
MOCK = imread('duck.tif');
keyboard
MOCK = MOCK(:,:,1);
MOCM = double(MOCK);
ikp = find(MOCM(:)<150);
[nx,ny] = size(MOCK);
tmp = sparse(nx,ny);
tmp(ikp) = MOCM(ikp);
MOCM = tmp;
spy(MOCM)
[ny,nx] =size(MOCK);
I = speye(ny*nx);
i0 = zeros(ny,nx);
i0(:) = 1:ny*nx;
ie = i0(:,[2:end,1]); iw = i0(:,[end,1:end-1]);
in = i0([2:end,1],:); is = i0([end,1:end-1],:);
% permuation operators
IE = I(ie(:),:); IW = I(iw(:),:);
IN = I(in(:),:); IS = I(is(:),:);
n = 1;
for k = 1:10*nx
if n <= 100
MOCM(:) = IE*MOCM(:);
elseif n > 101 & n <=200
MOCM(:) = IS*MOCM(:);
elseif n > 201 & n <= 300
MOCM(:) = IW*MOCM(:);
elseif n > 301 & n <= 400
MOCM(:) = IN*MOCM(:);
end
spy(MOCM); drawnow
n = n + 1;
if mod(k,400) == 0
n = 1;
MOCM = fliplr(MOCM);
end
end