用matlab画一些二维填色,目前主要接触到函数有两个对点填色的函数pcolor和contourf,以及一个对格子填色的函数image
pcolor本质上是对点填色,函数自带的属性也可插值
contourf是一个画等值线的函数,函数自身所画出的曲线不够平滑,若插值需要借助griddata等函数对数据进行预处理
具体函数属性细节的设置见官网:
https://ww2.mathworks.cn/help/matlab/ref/pcolor.html
https://ww2.mathworks.cn/help/matlab/ref/contourf.html#mw_e930b555-4fc5-4db1-8907-5d10f7aac1c0
https://ww2.mathworks.cn/help/matlab/ref/griddata.html
下面是花了半小时做的简单对比
插值多少对高值有所损耗,综合来看,马赛克最清晰直接了。
1:pcolor直接画图以及加入shading interp
Code:
fontsize=18;
pd = makedist('Normal')
[x,y] = meshgrid(1:1:10,1:1:10);
value=random(pd,[10,10])
s=pcolor(x,y,value);
% shading interp; 选择插值与否
set(s,'edgecolor','none');
colormap jet;colorbar;
caxis([-3,3])
set(gca,'FontSize',fontsize,'FontName','Times New Roman','FontWeight','bold');
2:contourf画图与使用griddata v4方法插值
[C,h]=contourf(x,y,value,20);
set(h,'Color','none');
colormap jet;colorbar;
caxis([-3,3])
set(gca,'FontSize',fontsize,'FontName','Times New Roman','FontWeight','bold');
figure(2)
[xq,yq]=meshgrid(1:0.1:10,1:0.1:10);
value_q=griddata(x,y,value,xq,yq,'v4')
[C,h]=contourf(xq,yq,value_q,20);
set(h,'Color','none');
colormap jet;colorbar;
caxis([-3,3])
set(gca,'FontSize',fontsize,'FontName','Times New Roman','FontWeight','bold');
3:image画图
x=1:10;y=1:10;
pd = makedist('Normal')
value=random(pd,[10,10])
image(x,y,value,'CDataMapping','scaled')%后面的参数是根据数值大小选取colorbar着色范围
% set(gca,'YDir','normal'); %若y轴为时间,可将y轴倒置
colormap jet;colorbar;