本期图片来源于粉丝,图片来自文章:网址;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;
% 有想画的图可分享到后台。
% 数据构造
[50); ]=peaks(
% 数据处理
for i = 1:9
z(z>=-8+(i-1)*2&z<=-8+2*(i))=-8+(i-1)*2;
end
% 颜色包% 颜色包颜色的多少和你的等值线区间一样
load('colormore.mat')
% 画图
close all
figure
set(gcf,'position',[50 50 850 850],'color','w')
contourf(x,y,z)
colormap(color_list_temp)
% 自制colorbar
coxx = [-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;
end
export_fig('colobar_made.jpg')