%% 修改日期 2021/12/8
clc
clear
close all
%% 测试数据,第一列代表纬度,第二列经度,第三列则是点的值
txt = [46.75296619 -69.1022775 0.312909752
46.80735808 -69.06131914 0.391153485
46.68438136 -68.40644856 -0.524917185
47.68233472 -67.83951645 -0.362872481
47.73347821 -67.48293127 0.379074633
46.56927204 -66.63274775 0.627253115
48.82562532 -89.90962194 -0.810236374
49.0812938 -88.90238965 0.02499993
49.35432864 -86.12624065 0.065611847
48.68766235 -85.30347215 -0.903552517
63.50718307 -106.5093842 0.041277163
54.97197342 -94.08466339 0.034904364
63.40093613 -104.4501114 0.078380927
60.09253311 -99.99758911 0.482118399
52.10863113 -88.39727783 0.112472057
61.94615173 -100.0819702 0.024138847
60.3741684 -102.3393326 0.357612896
54.6315918 -111.2618713 -0.000142065
55.32191086 -108.146904 0.070289746
54.93228531 -109.2432938 0.751994625
57.58321381 -96.2898941 0.04316574
56.83683014 -104.2588959 -0.00735079
54.33012772 -109.4531403 0.143774554
54.71362686 -93.17708588 0.085161708
52.77823257 -92.98579407 0.218541756
51.54619598 -92.03131104 0.134764045
52.16275024 -90.94496155 -0.761091509
52.20027542 -89.87015533 0.25543201
53.00246048 -89.05403137 0.533926491
53.35476303 -89.2333374 0.007532292];
%% 绘制点的地理空间分布,并用颜色和大小代表数值
%
figure(1)
worldmap([35 75],[-150 -50]) %加载指定区域的世界地图
geoshow('landareas.shp', 'FaceColor', [0.85 0.85 0.85], 'EdgeColor', [0.8 0.8 0.8]) %加载陆地
hco = colorbar; %显示colorbar
set(get(hco,'label'),'string','Trend of Q (mm/year)','FontSize',15); %加载colorbar标签
load c_MPL_RdBu %加载指定colorbar
colormap(mycmap)
caxis([-1 1]) %colorbar上下限
for i = 1:length(txt)
lat = txt(i,1); %点的纬度
lon = txt(i,2); %点的经度
z = txt(i,3); %点的数值
%% 关键一步,给点赋颜色,geoshow无法像scatter函数一样自动根据点据数据赋颜色
% 计算点的颜色在colorbar中的位置,我采用的colorbar是128*3的rgb
color_loc = round((z+1)/2*128);
color_loc(color_loc>128) = 128; %说明点的值超过了color的上限(此处是1),赋以最蓝的颜色
color_loc(color_loc<1) = 1; %说明点的值超过了color的上限(此处是-1),赋以最洪的颜色
geoshow(lat,lon,'displaytype','point','MarkerFaceColor',mycmap(color_loc,:),'MarkerEdgeColor',[0.5 0.5 0.5],'markersize',10,'Marker','o')
end
h = figure(1);
set(h,'units','normalized','position',[0.1 0.1 0.4 0.35]);
输出图如下: