MATLAB绘图基础12:地理信息可视化
参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。
12.地理信息可视化
12.1 地理散点图
-
地理散点图用于可视化地理坐标点分布的图形,适用于在地图上显示离散地理坐标点,每个点可以代表不同的实体、地点或其他类型的观测值;
-
地理散点图常用于标记地理位置、研究地理分布、城市规划、地理统计等领域;
-
地理散点图基本绘制过程:
% ch12_01.m clear; clc; % 1.创建模拟地理坐标数据; longitude = [12.0023, 30.9509, 20.0091, 40.9998, 50.1982]; latitude = [-12.0091, -30.9982, -20.8901, -23.9910, -32.0213]; cities = {'城市1', '城市2', '城市3', '城市4', '城市5'}; % 2.创建地理散点图; figure; ax = usamap('conus'); setm(ax, 'FFaceColor', [0.9 0.9 0.9]); % 设置地图背景颜色 % 3.添加地理底图; geoshow('landareas.shp', 'DisplayType', 'polygon', 'facecolor', [0.6 0.6 0.6]); hold off; geoscatter(latitude, longitude, 'r', 'filled'); % 4.使用text函数添加城市名称标签 for i = 1:numel(cities) text(latitude(i), longitude(i), cities{i}, 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'left'); end % 5.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch12_01.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
12.2 地理密度图
-
地理密度图用于显示地理空间上的数据点的密度分布,通常用于表示在特定地理区域内的数据点的集中程度;
-
地理密度图可以帮助用户识别地理上的热点区域或稀疏区域;
-
地理密度图绘制基本过程:
% ch12_02.m clear; clc; % 1.创建模拟地理坐标数据; longitude = [12.0023, 30.9509, 20.0091, 40.9998, 50.1982]; latitude = [-12.0091, -30.9982, -20.8901, -23.9910, -32.0213]; cities = {'城市1', '城市2', '城市3', '城市4', '城市5'}; population = [898982, 569871, 345878, 568970, 498378]; % 2.创建地理密度图; figure; ax = usamap('conus'); setm(ax, 'FFaceColor', [0.9 0.9 0.9]); % 设置地图背景颜色 % 3.添加地理底图; geoshow('landareas.shp', 'DisplayType', 'polygon', 'facecolor', [0.6 0.6 0.6]); hold off; geodensityplot(latitude, longitude, population, 'FaceColor', 'interp'); % 4.标题、颜色栏等信息; colormap(autumn); c = colorbar; c.Label.String = '人口密度'; title('城市人口地理密度图');
12.3 地理线图
-
地理线图常用于可视化连接地理位置的线条或路径,可用 g e o p l o t 、 g e o s h o w 、 p l o t m {\rm geoplot、geoshow、plotm} geoplot、geoshow、plotm函数创建地理线图;
-
地理线图基本绘制过程:
% ch12_03.m clear; clc; % 1.创建模拟地理坐标数据; longitude = [12.0023, 30.9509, 20.0091, 40.9998, 50.1982]; latitude = [-12.0091, -30.9982, -20.8901, -23.9910, -32.0213]; % 2.创建地理线图; figure; ax = usamap('conus'); setm(ax, 'FFaceColor', [0.9 0.9 0.9]); % 设置地图背景颜色 % 3.添加地理底图; geoshow('landareas.shp', 'DisplayType', 'polygon', 'Facecolor', [0.6 0.6 0.6]); hold off; geoplot(latitude, longitude, 'b', 'LineWidth', 2, 'Color', [0 0 1 0.5]); % 4.标题; title('城市间地理线图'); % 5.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch12_03.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
12.4 地理气泡图
-
地理气泡图常用于显示地理位置相关的数据,地理气泡图将地理位置数据以气泡的形式标记在地图上,每个气泡的大小、颜色或透明度常代表与该地理位置相关联的数据属性;
-
地理气泡图基本绘制过程:
% ch12_04.m clear; clc; % 1.创建模拟地理坐标数据; longitude = [12.0023, 30.9509, 20.0091, 40.9998, 50.1982]; latitude = [-12.0091, -30.9982, -20.8901, -23.9910, -32.0213]; cities = categorical(["城市1", "城市2", "城市3", "城市4", "城市5"]); population = [898982, 569871, 345878, 568970, 498378]; % 2.创建地理气泡图; figure; geobubble(latitude, longitude, population, cities); % 3.标题; title('城市人口分布地理气泡图');
12.5 等高线图
-
等高线图通过等高线线条表示数据的等值线,等高线图用于显示地形、地势、气象数据、温度分布、电磁场等数据;
-
等高线图基本绘制过程:
% ch12_05.m clear; clc; % 1.生成坐标数据矩阵; [X, Y] = meshgrid(-3:0.1:3); Z = X.*exp(-X.^2 - Y.^2); % 2.绘制等高线图; contour(X, Y, Z, 50); % 3.标题、标签; xlabel('X'); ylabel('Y'); title('等高线图'); % 4.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch12_05.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);
-
模拟火山地形图的等高线图绘制:
% ch12_06.m clear; clc; % 1.读取CSV文件并创建表格 data = readtable('ch12_06.csv'); % 2.从表格中提取数值数据并转化为双精度矩阵 volcano = table2array(data); % 3.颜色映射 colormap(parula); % 4.创建等值线图 contourLevels = 20; contour(volcano, contourLevels , 'ShowText', 'on'); colorbar; % 5.标签、标题; xlabel('X'); ylabel('Y'); title('火山地形图'); % 6.生成高质量图像; dpi = 600; imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch12_06.png'; print(imagePath, '-dpng', ['-r', num2str(dpi)]);