- 积分
 - 7173
 
	- 贡献
 -  
 
	- 精华
 
	- 在线时间
 -  小时
 
	- 注册时间
 - 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版就有。推动技术进步的是这些无私的国内外大牛们,在此深表感谢[星星眼]下面是正确的图
 
 
 
 
 
 
 
 
 
 |   
 
 
 
 
 
 |