figure pcolor(X1,Y1,img); %二维图像 set(gca,'fontname','times new roman','fontsize',15); %坐标轴设置 xlabel('\itx','fontname','times new roman','fontsize',20); %x方向标注 ylabel('\ity','fontname','times new roman','fontsize',20); %y方向标注 caxis('auto'); shading interp;colormap jet;colorbar;
时间: 2024-01-09 11:05:57 浏览: 122
这段代码是用于绘制二维图像的,其中包括以下几个步骤:
1. 创建一个新的图形窗口,即 `figure`。
2. 绘制二维图像,使用 `pcolor` 函数,其中 `X1` 和 `Y1` 分别是图像的横纵坐标,`img` 是图像的像素值矩阵。
3. 设置坐标轴的字体和大小,使用 `set(gca,'fontname','times new roman','fontsize',15)`。
4. 设置 x 轴和 y 轴的标签,分别使用 `xlabel('\itx','fontname','times new roman','fontsize',20)` 和 `ylabel('\ity','fontname','times new roman','fontsize',20)`。
5. 自动设置颜色轴范围,使用 `caxis('auto')`。
6. 设置图像的渲染方式,使用 `shading interp`。
7. 设置图像的颜色映射,使用 `colormap jet`。
8. 添加颜色条,使用 `colorbar`。
相关问题
帮我检查一下这段代码 clc clear fname='G:\CMIP6 data\map_hed\ACCESS-CM2\ssp126.xlsx'; [data]=xlsread(fname); lat = ncread('G:\CMIP6 data\CMIP6_china\Precipitation\ACCESS-CM2 (Australia)\pr_day_ACCESS-CM2_ssp126_r1i1p1f1_gn_20150101-21001231_v20191108.nc','lat'); lon = ncread('G:\CMIP6 data\CMIP6_china\Precipitation\ACCESS-CM2 (Australia)\pr_day_ACCESS-CM2_ssp126_r1i1p1f1_gn_20150101-21001231_v20191108.nc','lon'); %% filename4=('E:\XB\xibei\NewFolder\xeibei84.shp');%E:\XB\xibei\xb_wang Shape=shaperead(filename4); Sx=Shape.X;Sy=Shape.Y; data1=data'; for g=1:length(lat) x=lat(g); for h=1:length(lon) y=lon(h); U=inpolygon(x,y,Sy,Sx); if U==0 data1(g,h,:)=nan; end end end %% % filename=shaperead('E:\XB\xibei\NewFolder\xb_line.shp'); % geoshow(filename) m_proj('miller','longitudes',[72 112], 'latitudes',[33 51]); u=m_pcolor(lon,lat,data1); colormap('autumn'); caxis([5,30]);%pr 3*4=12 m_grid('FontSize',10,'Fontname','Times New Roman'); % m_grid('FontSize',10,'Fontname','Times New Roman','xticklable',[]); handles=findobj(gca,'tag','m_grid_yticklabel'); delete(handles(1:2:end)); handles=findobj(gca,'tag','m_grid_xticklabel'); delete(handles(1:2:end)); % m_grid('linestyle','none'); set(u,'edgecolor','none');%? colorbar map=shaperead('E:\XB\xibei\NewFolder\xb_line.shp');%加载省界带南海的边界线 xb_x=[map(:).X];%提取经度 xb_y=[map(:).Y];%提取纬度 provence=[xb_x',xb_y']; plot(xb_x,xb_y,'-k','LineWidth',1.2);%绘国界 axis([72 112 33 51]);%设置显示的经纬度范围 hold off
这段代码中有一些错误:
1.在加载shp文件时,使用了不同的变量名:`fname`和`filename4`。应该保持一致。
2.在加载shp文件时,没有指定要读取的形状文件类型。应该使用`shaperead`函数的第二个输入参数指定类型,例如:`Shape=shaperead(filename4,'UseGeoCoords',true,'Selector',{@(name) strcmp(name,'Polygon')},'Attributes',{'X','Y'})`。
3.在使用`m_pcolor`函数时,应该将纬度和经度矩阵转置,即使用`[lon,lat]=meshgrid(lon,lat)`。
4.在绘制地图时,应该先用`m_proj`函数设置投影方式,再使用`m_grid`函数绘制网格线和标签。
5.在绘制地图时,应该使用`hold on`命令保留图形。
下面是修改后的代码:
```matlab
clc
clear
% 加载Excel文件
fname = 'G:\CMIP6 data\map_hed\ACCESS-CM2\ssp126.xlsx';
[data] = xlsread(fname);
% 加载经纬度信息
lat = ncread('G:\CMIP6 data\CMIP6_china\Precipitation\ACCESS-CM2 (Australia)\pr_day_ACCESS-CM2_ssp126_r1i1p1f1_gn_20150101-21001231_v20191108.nc','lat');
lon = ncread('G:\CMIP6 data\CMIP6_china\Precipitation\ACCESS-CM2 (Australia)\pr_day_ACCESS-CM2_ssp126_r1i1p1f1_gn_20150101-21001231_v20191108.nc','lon');
% 加载shp文件
filename4 = 'E:\XB\xibei\NewFolder\xeibei84.shp';
Shape = shaperead(filename4,'UseGeoCoords',true,'Selector',{@(name) strcmp(name,'Polygon')},'Attributes',{'X','Y'});
Sx = Shape.X;
Sy = Shape.Y;
% 将数据矩阵转置
data1 = data';
% 标记在外部的数据点设置为NaN
for g = 1:length(lat)
x = lat(g);
for h = 1:length(lon)
y = lon(h);
U = inpolygon(x,y,Sy,Sx);
if U == 0
data1(g,h,:) = nan;
end
end
end
% 绘制地图
figure
m_proj('miller','longitudes',[72 112], 'latitudes',[33 51]);
hold on
[lon,lat]=meshgrid(lon,lat);
u = m_pcolor(lon,lat,data1);
colormap('autumn');
caxis([5,30]);%pr 3*4=12
m_grid('FontSize',10,'Fontname','Times New Roman');
handles = findobj(gca,'tag','m_grid_yticklabel');
delete(handles(1:2:end));
handles = findobj(gca,'tag','m_grid_xticklabel');
delete(handles(1:2:end));
map = shaperead('E:\XB\xibei\NewFolder\xb_line.shp');
xb_x = [map(:).X];
xb_y = [map(:).Y];
provence = [xb_x',xb_y'];
plot(xb_x,xb_y,'-k','LineWidth',1.2);
axis([72 112 33 51]);
hold off
```
function Draw_data_on_World(LON, LAT, data, MyTitle) if nargin < 4 MyTitle = 0; end MAGname = strsplit(MyTitle, '_'); Cb_title = ''; for ii = 1:size(MAGname,2) Cb_title = [Cb_title,MAGname{ii}]; if ii < size(MAGname,2) Cb_title = [Cb_title,'\_']; end end figure; set(gcf, 'unit', 'normalized', 'position', [0,0,1,1]); % 全屏 hold on m_proj('robinson','long',[-180 180],'lat',[-90 90]); m_pcolor(LON, LAT, data) m_coast('linewidth',2,'color','w') m_grid('box','fancy','linestyle','-','gridcolor','w','backcolor',[.2 .65 1],... 'Fontsize',12, 'Fontname', 'Times'); % 边框属性 cb = colorbar('horiz'); if MyTitle ~= 0 ylabel(cb,[Cb_title,' (nT)'],'FontSize',14,'FontName','Times'); end set(cb,'YTick',get(cb,'YTick'),'FontSize',14,'FontName','Times') cb.TickLength = 0; cb.Position = [cb.Position(1)+0.18,cb.Position(2)-0.065,cb.Position(3)*0.54,cb.Position(4)]; end
这是一个名为Draw_data_on_World的函数的代码实现。
该函数的输入参数包括LON和LAT,它们是表示世界地图上坐标点位置的网格。data是要在地图上绘制的数据,MyTitle是绘图的标题。
函数中首先判断输入参数的个数,如果参数个数小于4,则将MyTitle设置为0。
然后,通过strsplit函数将MyTitle按照下划线'_'进行分割,得到一个包含分割后字符串的单元格数组MAGname。
之后,通过循环遍历MAGname数组,将每个字符串拼接到变量Cb_title中,并在每个字符串之间添加下划线'\',以形成合适的颜色条标题。
接下来,创建一个全屏的图形窗口,并绘制地图投影和数据。
调用m_coast函数绘制海岸线,并设置线宽和颜色。
使用m_grid函数绘制地图边框和网格,并设置相关属性,如线型、颜色和背景色。
创建一个水平方向的颜色条,并设置相关属性。
最后,根据MyTitle是否为0,设置颜色条的标签。
通过这段代码,可以在世界地图上绘制给定的数据,并设置相应的标题和颜色条。
阅读全文
相关推荐














