matlab画图卡住了!!!求大神解答!!!

close all;

clear all;

clc;

dbstop if error;

fnshp = 'D:\matlabmapdata\china\china.shp'; % 替换为你的 shp 文件路径

read = shaperead(fnshp);

% 设置地图投影和范围,适当扩大范围以尽量包含南海诸岛等区域

m_proj('mercator', 'lon', [65 145], 'lat', [-5 60]);

% 绘制地图

for k = 1:length(read)

% 获取多边形的顶点坐标信息

x = read(k).X;

y = read(k).Y;

% 判断x是否为向量形式,如果是则转换为列向量,确保后续操作维度一致

if isvector(x)

x = x(:);

elseif size(x, 2) == 1

x = x';

end

% 判断y是否为向量形式,如果是则转换为列向量,确保后续操作维度一致

if isvector(y)

y = y(:);

elseif size(y, 2) == 1

y = y';

end

% 对于闭合的多边形,需要将第一个顶点坐标再添加一次,以保证正确绘制(如果是多边形类型的数据)

if strcmp(read(k).Geometry, 'Polygon')

% 确保维度一致后再进行拼接

x = [x; x(1, :)];

y = [y; y(1, :)];

end

% 使用更严谨的方式处理单个顶点坐标情况(避免出现无法绘制的错误)

if size(x, 2) == 1

x = repmat(x, 1, 2);

y = repmat(y, 1, 2);

end

% 根据不同几何类型绘制地图元素

if strcmp(read(k).Geometry, 'Polygon')

patch('XData', x, 'YData', y, 'FaceColor', [0.7 0.7 0.7], 'EdgeColor', 'k');

elseif strcmp(read(k).Geometry, 'Point')

plot(read(k).X, read(k).Y, 'Marker', 'o', 'MarkerFaceColor', [0.7 0.7 0.7], 'MarkerEdgeColor', 'k');

elseif strcmp(read(k).Geometry, 'Line')

plot(read(k).X, read(k).Y, 'Color', 'k');

end

end

% 计算积冰潜势数据(这里使用模拟数据,你需要根据实际数据进行替换)

numDataPoints = 100;

lon = rand(numDataPoints, 1) * (135 - 73) + 73; % 经度范围大致在中国区域内

lat = rand(numDataPoints, 1) * (53 - 4) + 4; % 纬度范围大致在中国区域内

T = randn(numDataPoints, 1) * 10 - 10; % 模拟温度数据,符合正态分布,均值为 -10,方差适当调整

RH = rand(numDataPoints, 1) * 100; % 模拟相对湿度数据,范围在 0 - 100

CT = randn(numDataPoints, 1) * 20 - 30; % 模拟云顶温度数据,符合正态分布,均值为 -30,方差适当调整

WV = randn(numDataPoints, 1) * 3; % 模拟气流垂直速度数据,符合正态分布,均值为 0,方差适当调整

LWC = rand(numDataPoints, 1) * 1; % 模拟大气层液态水含量数据,范围在 0 - 1

iceIndices = zeros(numDataPoints, 1);

for i = 1:numDataPoints

iceIndices(i) = SCIP(T(i), RH(i), CT(i), WV(i), LWC(i));

end

% 根据积冰潜势数据绘制颜色图

[X, Y] = meshgrid(65:0.5:145, -5:0.5:60); % 调整网格分辨率,可根据需要进一步调整

Z = griddata(lon, lat, iceIndices, X, Y, 'linear'); % 尝试使用线性插值方法

% 先绘制积冰潜势颜色图

h_pcolor = pcolor(X, Y, Z);

shading flat;

colormap(jet); % 使用 jet 颜色映射,有蓝色到红色

colorbar; % 添加颜色条

% 设置颜色图的透明度,使其变淡且不遮挡地图,可根据需要调整透明度值

set(h_pcolor,'FaceAlpha',0.3);

hold on; % 保持当前图形,以便后续添加地图和网格

% 再绘制地图

for k = 1:length(read)

% 获取多边形的顶点坐标信息

x = read(k).X;

y = read(k).Y;

% 判断x是否为向量形式,如果是则转换为列向量,确保后续操作维度一致

if isvector(x)

x = x(:);

elseif size(x, 2) == 1

x = x';

end

% 判断y是否为向量形式,如果是则转换为列向量,确保后续操作维度一致

if isvector(y)

y = y(:);

elseif size(y, 2) == 1

y = y';

end

% 对于闭合的多边形,需要将第一个顶点坐标再添加一次,以保证正确绘制(如果是多边形类型的数据)

if strcmp(read(k).Geometry, 'Polygon')

% 确保维度一致后再进行拼接

x = [x; x(1, :)];

y = [y; y(1, :)];

end

% 使用更严谨的方式处理单个顶点坐标情况(避免出现无法绘制的错误)

if size(x, 2) == 1

x = repmat(x, 1, 2);

y = repmat(y, 1, 2);

end

% 根据不同几何类型绘制地图元素

if strcmp(read(k).Geometry, 'Polygon')

patch('XData', x, 'YData', y, 'FaceColor', [0.7 0.7 0.7], 'EdgeColor', 'k');

elseif strcmp(read(k).Geometry, 'Point')

plot(read(k).X, read(k).Y, 'Marker', 'o', 'MarkerFaceColor', [0.7 0.7 0.7], 'MarkerEdgeColor', 'k');

elseif strcmp(read(k).Geometry, 'Line')

plot(read(k).X, read(k).Y, 'Color', 'k');

end

end

hold on;

% 添加地图网格

m_grid('box','on','tickdir','out','xtick',65:10:145,'ytick',-5:10:60); % 设置合适的网格刻度间隔

% 获取地图数据的经纬度范围

lon_min = inf;

lon_max = -inf;

lat_min = inf;

lat_max = -inf;

for k = 1:length(read)

x = read(k).X;

y = read(k).Y;

lon_min = min(lon_min, min(x));

lon_max = max(lon_max, max(x));

lat_min = min(lat_min, min(y));

lat_max = max(lat_max, max(y));

end

% 根据地图范围设置合适的坐标轴范围,适当扩展边界,并确保坐标轴显示

axis([lon_min - 10 lon_max + 10 lat_min - 10 lat_max + 10]);

axis on; % 确保坐标轴显示开启

axis equal; % 设置坐标轴纵横比相等,避免因缩放比例不同导致显示问题

title('积冰潜势地理空间分布');

xlabel('经度');

ylabel('纬度');

这段代码是哪里出了问题呢?为什么网格显示不出来啊???

这个颜色如何能够再更为柔和一点?有没有大神能够帮忙解决一下这个问题呢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值