- 积分
- 6857
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-11-2
- 最后登录
- 1970-1-1
|
50金钱
本帖最后由 aridlhy 于 2024-6-27 14:24 编辑
本人用matlab 2021b绘制空间图,但是有时候会出现格点颜色和实际数值严重不符合的情况,有时候就没有问题,想了好多天百思不得其解,不知用matlab画图的朋友们有没有出现过这个问题?希望能得到回复。附上图片和代码,实际上图片应该是多彩的,不应该是只有两种体颜色。希望matlab不要有bug,那就辜负了我对它的一片真情
clc;
clear all;
clf;
name_nc = 'dataset\AI_annual_2010.nc';
lon = ncread(name_nc,'lon');
lat = ncread(name_nc,'lat');
%%
file_path = 'dataset\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.nc'));%获取该文件夹中所有nc格式的图像
img_num = length(img_path_list);%获取图像总数量
for j = 1:img_num
image_name = img_path_list(j).name;% 图像名
image = ncread(strcat(file_path,image_name),'ai');
dat(:,:,j)= image;
imshow(image);
end
dat = mean(dat,3,'omitnan');
data = dat';
lat = lat';
data(data == -32768) = NaN;
[nlon, nlat] = meshgrid(lon, lat);
%% 中国边界信息
borders=shaperead('China_map\bou1_4l.shp');
cx=[borders(:).X]; cy=[borders(:).Y];
%% 这块就用到了m_map函数包
%m_proj('miller','lon',[100 125],'lat',[33 45]); % 地图投影
m_proj('miller','lon',[70 135],'lat',[15 55]); % 地图投影
m_contourf(nlon,nlat,data,'linestyle','none');
m_grid('linestyle','none','xtick',([110 120]),'Ytick',([35 40 45]));
hold on
m_plot(cx,cy,'g','linewidth',3); %绘制地图外边界
colormap(jet(10)) % 使用jet颜色映射
colorbar;
caxis([0 8])这个问题解决了:1)m_contourf那一行改成m_contourf(nlon,nlat,data,[0:1:8],'linestyle','none'); 比原始代码加上[0:1:8]类似强制的等值线间隔,就可以了
2)如果不用m_contourf,用m_pcolor(nlon,nlat,data)也能画出类似的阴影图,实际上是马赛克图,但是这种图不同颜色边缘会有锯齿状,高分辨率的数据效果会更好。3)遇到画图问题可以参考m_map来源的加拿大机构网站,最下面有examples,里面函数应用会对人有启发,记得还有个大牛翻译的m_map中文使用指南,在气象家园matlab版就有。推动技术进步的是这些无私的国内外大牛们,在此深表感谢[星星眼]下面是正确的图
|
|