目前暂时没有大佬用matlab绘制疫情地图,其实MATLAB绘制地图还是相对容易的,于是就拿了两个小时,专门研究了一下,遂成此文。
一、准备工作
开始之前需要准备好malab,中国地图shp文件,m_map工具包。
中国地图shp文件可以在下面的链接中下载:
https://gadm.org/download_country_v3.html
数据来自2020年2月2日支付宝疫情播报。
二、实际代码
%% mapchina
clc;clear;clf
% shapefile中都包含了国界和省界
fnshp_L='D:\Matlab\Matlab画地图\国家基础地理信息系统数据\国界与省界\bou2_4l.shp';%ShapeType: 'PolyLine'
fnshp_P='D:\Matlab\Matlab画地图\国家基础地理信息系统数据\国界与省界\bou2_4p.shp';%ShapeType: 'Polygon'
infoL = shapeinfo(fnshp_L);
infoP = shapeinfo(fnshp_P);
readL=shaperead(fnshp_L);
readP=shaperead(fnshp_P);
subplot(121);mapshow(readL);title('PolyLine of China')
subplot(122);
mapshow(readP);
title('Polygon of China');
%bbox=[114,29;120,35];%安徽的地理位置
%S = shaperead(fnshp_P,'BoundingBox',bbox);
color_hot=colormap(hot);
pronvince1={'湖北省','浙江省','广东省','河南省','湖南省','安徽省','江西省','重庆市','江苏省','四川省','山东省','北京市','上海市','福建省','陕西省',...
'广西壮族自治区','河北省','云南省','黑龙江省','辽宁省','天津市','海南省','山西省','甘肃省',...
'贵州省', '宁夏回族自治区','内蒙古自治区','吉林省','香港特别行政区','青海省','新疆维吾尔自治区','西藏自治区'};
count=[9074,661 604 493 463 340 333 262 236 231 225 183 177 159 116 111 104 99 95 64 63 56 45 40 38 28 27 23 21 14 11 1];
n=1;
figure(2)
for i=1:numel(pronvince1)
S = shaperead(fnshp_P, 'UseGeoCoords', true,...
'Selector',{@(NAME) strcmp(NAME,pronvince1{i}), 'NAME'});
k=i;
if count(k)>1000
yanse=color_hot(10,:);
else if count(k)>500
yanse=color_hot(15,:);
else if count(k)>100
yanse=color_hot(20,:);
else if count(k)>10
yanse=color_hot(30,:);
else
yanse=color_hot(40,:);
end
end
end
end
geoshow(S,'FaceColor',yanse);hold on
end
三、 运行结果