【提醒】当图形比较多时,为了方便比较,需要共用一个colorbar。但如果不统一设置colorbar的上下界限,可能显示了共用,但实际“共用”的只是最后一个图的colorbar而已
用 matlab 读shp文件,返回结构体变量 map = sheapread(‘path\xxx.shp’);
本例中的map
% 该程序用于产生shp文件的分区着色
%(1)用 matlab 读shp文件,返回结构体变量
% map = sheapread('path\xxx.shp');
load('newbb.mat') % 这里为了分区显示,直接导入存储好的shp对应的结构体
H_f = figure(1)
set(gcf,'Color','w');
year=[2014,2015,2016,2017,2018];
for img=1:5
Hax = subplot(5,1,img);
Haxeslist{img}=Hax;% 保存每个子图的句柄
addr = ['HWHD_',num2str(year(img))]; % 这是个字符串,即需要画图的字段名称,本例中对应“HWHD_year”
shpfile_style(map,addr);
set(gca,'Position',[0.1 1-0.165*img 0.75 0.14],'Visible','on');
end
Hbig_axes = axes('Position',[0.23,0.175,0.5,0.80],'Visible','off'); % 这里为colorbar创建一个依附的坐标系,但不显示,目的是公用一个colorbar.
Hbig_clb = colorbar; % 这个启用时,整幅图公用一个colorbar
% 该子函数用于对导入matlab中的shp文件的作图风格进行调整;
% 输入变量:shp文件中需要作图的字段(index_val),类型为字符串,本例中对应“HWHD_Year”;
% map为 map = sheapread('pathway\xxx.shp')返回的表示shp内容的结构体
function shpfile_style(map,index_val)
facecolor = rainbow(10); % rainbow(10)表示风格为“rainbow”的色阶,等分为10层
range = [0,1]; % [0,1]为图例上下界限
style = makesymbolspec('Polygon',{index_val, range,'FaceColor',facecolor});
% 上式中,Polygon表示shp文件中的面元素,当然也可以为“Point”,“Polyline”,“Point”等,为“Polyline”时,对应'Color'.
mapshow(map,'SymbolSpec',style) % 以设定的风格显示shp文件
set(gca,'Visible','on')
box on; grid on
% colorbar(); % 这个启用时,每幅图都会显示colorbar
colormap(facecolor);
caxis(range);
% 在图中添加文本(这部分非作图中必须,可忽略)
fontsize = 8; % 文本字体大小
text(112,23.5,'肇庆','FontSize',fontsize) % text(x,y,txt),其中x,y表示坐标位置;
text(112.5,22.2,'江门','FontSize',fontsize)
text(112.9,23,'佛山','FontSize',fontsize)
text(113.3,22.5,'中山','FontSize',fontsize)
text(113.1,22.2,'珠海','FontSize',fontsize)
text(113.4,23.3,'广州','FontSize',fontsize)
text(113.7,22.9,'东莞','FontSize',fontsize)
text(113.9,22.6,'深圳','FontSize',fontsize)
text(114.3,23.1,'惠州','FontSize',fontsize)
text(114,21.7,[index_val(1:4),' ',index_val(6:9)],'FontSize',14)
end