matlab画分段式colorbar和等值线

文摘   2024-11-24 02:21  

本期图片来源于粉丝,图片来自文章:网址;https://onlinelibrary.wiley.com/doi/10.1002/bies.202000149

% 有想画的图可分享到后台。


他想知道的两个地方:

第一:colorbar;

第二个:等值线的显示;

解决方法不唯一:




解答一colorbar,就自己造了。

使用patch自己填充;

比如这里可以给个基础的colorbar,然后循环画出;再加上colorbar的text

coy1 = 0.15;cox = [-2.8 -2.6 -2.6 -2.8];coy = [-2.85 -2.85 -2.75 -2.75];% 基础的colorbar框,根据自己的坐标轴范围设置;for i = 1:8 % 和颜色包长度一样    h = patch(cox,coy,color_list_temp(i,:));    set(h,'EdgeColor',color_list_temp(i,:),'FaceColor',color_list_temp(i,:));    text(-2.5,mean(coy,"all"),num2str(-8+(i-1)*2))    coy = coy+coy1;end


解答二

他这个渐变很明显的是因为那个颜色就是那个数值;因此,需要自行处理;

比如这里,把这个范围的数据变为下限;

% 数据处理for i = 1:9    z(z>=-8+(i-1)*2&z<=-8+2*(i))=-8+(i-1)*2;end


我的结果:


这里的colorbar的颜色包提取之前有教程:

matlab--自定义颜色条---看到别人的好看的颜色条如何复制过来

全文代码:

%%% 本期图片来源于粉丝,图片来自文章:网址;%clear;clc;close all;% 有想画的图可分享到后台。% 数据构造[x,y,z]=peaks(50);% 数据处理for i = 1:9    z(z>=-8+(i-1)*2&z<=-8+2*(i))=-8+(i-1)*2;end% 颜色包% 颜色包颜色的多少和你的等值线区间一样load('colormore.mat')% 画图close allfigureset(gcf,'position',[50 50 850 850],'color','w')contourf(x,y,z)colormap(color_list_temp)% 自制colorbarcoxx = [-2.9 -2.2 -2.2 -2.9];coyy = [-2.9 -2.9 -1.5 -1.5];patch(coxx,coyy,'w');%coy1 = 0.15;cox = [-2.8 -2.6 -2.6 -2.8];coy = [-2.85 -2.85 -2.75 -2.75];% 基础的colorbar框,根据自己的坐标轴范围设置;for i = 1:8 % 和颜色包长度一样    h = patch(cox,coy,color_list_temp(i,:));    set(h,'EdgeColor',color_list_temp(i,:),'FaceColor',color_list_temp(i,:));    text(-2.5,mean(coy,"all"),num2str(-8+(i-1)*2))    coy = coy+coy1;endexport_fig('colobar_made.jpg')

海洋与大气科学
海洋与大气科学数据分析,数据可视化分享,可教学。
 最新文章