Опитвам се да направя ред от 5 графики, използвайки подплотове (така че пет графики един до друг). Въпреки това, когато стартирам кода, първият график просто ще поеме цялата площ на фигурата. Как мога да го стартирам така, че всеки график да остане във всяка област?
Освен това, ако исках всяка година да бъде в различен ред, стил на пощенска марка, с 5 графики във всеки ред, възможно ли е това с помощта на subplot? В момента преглеждам всяка година и запазвам всеки ред от 5 графики като отделен jpg файл.
years = 1997:2014;
for y = 1:numel(years)
subplot(1,5,1)
ax = figure(1);
set(ax, 'visible', 'off','units','normalized','outerposition',[0 0 1 1]); % Make window that shows up full sized, which makes saved figure clearer
ax = usamap('conus');
states = shaperead('usastatelo', 'UseGeoCoords', true,...
'Selector',...
{@(name) ~any(strcmp(name,{'Alaska','Hawaii'})), 'Name'});
geoshow(ax, states,'FaceColor', 'none')
framem off; gridm off; mlabel off; plabel off
% Plot data - For each site
for i = 1:length(uID)
scatterm(ax, str2double(Lat{i}), str2double(Lon{i}), 40, annual_avg_PM25(i), 'filled');
end
subplot(1,5,2)
ax = figure(1);
set(ax, 'visible', 'on','units','normalized','outerposition',[0 0 1 1]); % Make window that shows up full sized, which makes saved figure clearer
ax = usamap('conus'); % Etc. Same as above
% Plot data - For each site
for i = 1:length(uID)
scatterm(ax, str2double(Lat_Win{i}), str2double(Lon_Win{i}), 40, PM25_Win(i), 'filled');
end
% Title
title(['PM2.5 24-hr Winter (DJF) Seasonal Average ', num2str(years(y)-1), '-', num2str(years(y))]); % Title changes every loop - Year;
% Etc. Same format for plotting 2 more graphs
% Save as jpg
clf
end
close(gcf)
Получавам това:
РЕДАКТИРАНЕ
Опитах следния код, който начертава подграфиците в съответните им квадранти, но обърква размера на последния график поради цветната лента и заглавията не са ограничени до квадрантите. Мога само да коригирам размера на заглавията, но има ли по-елегантно решение? Освен това бялото пространство не се използва ефективно.
years = 1997:2014;
for y = 1:numel(years)
ax = figure(1);
set(ax, 'visible', 'on','units','normalized','outerposition',[0 0 1 1]); % Make window that shows up full sized, which makes saved figure clearer
%% Annual average PM2.5 concentration
load(['PM25_24hr_AnnualAvg_' num2str(years(y)) '.mat'], 'annual_avg_PM25', 'Date', 'Lat', 'Lon', 'uID')
subplot(1,5,1);
MapLatLimit = [20 50];
MapLonLimit = [-135.5 -44];
usamaps = shaperead('usastatelo', 'UseGeoCoords', true, ...
'BoundingBox', [MapLonLimit' MapLatLimit']);
ax = axesm('MapProjection', 'eqaconic', 'MapParallels', [],...
'MapLatLimit', MapLatLimit, 'MapLonLimit', MapLonLimit,...
'GLineStyle', '-');
geoshow(usamaps, 'DisplayType', 'polygon', 'FaceColor','none')
framem off; gridm off; mlabel off; plabel off
% Title
title(['Annual Average ', num2str(years(y))]); % Title changes every loop - Year;
% Plot data - For each site
for i = 1:length(uID)
scatterm(ax, str2double(Lat{i}), str2double(Lon{i}), 40, annual_avg_PM25(i), 'filled');
end
clear('uID', 'annual_avg_PM25', 'Lat', 'Lon')
%% Plot all the other ones in the same fashion except for the last plot, which adds a colorbar
%% Fall Seasonal Average
load(['PM25_24hr_FallAvg_' num2str(years(y)) '.mat'], 'annual_avg_PM25', 'Date', 'Lat', 'Lon', 'uID')
subplot(1,5,5);
MapLatLimit = [20 50];
MapLonLimit = [-135.5 -44];
usamaps = shaperead('usastatelo', 'UseGeoCoords', true, ...
'BoundingBox', [MapLonLimit' MapLatLimit']);
ax = axesm('MapProjection', 'eqaconic', 'MapParallels', [],...
'MapLatLimit', MapLatLimit, 'MapLonLimit', MapLonLimit,...
'GLineStyle', '-');
geoshow(usamaps, 'DisplayType', 'polygon', 'FaceColor','none')
framem off; gridm off; mlabel off; plabel off
% Plot data - For each site
for i = 1:length(uID)
scatterm(ax, str2double(str2double(Lat{i})), str2double(str2double(Lon{i})), 40, annual_avg_PM25(i), 'filled'); % Plot a dot at each Lat and Lon
end
% Colorbar
caxis([5 12])
h = colorbar; %('location', 'OutsideEast');
ylabel(h,'Concentration (ug/m3)');
% Title
title(['Fall (SON) Average ', num2str(years(y))]); % Title changes every loop - Year;
% Save as jpg
eval(['print -djpeg map_US_' num2str(years(y)) '_Subplot_AnnualSeasonalAvg_PM25_24hr.jpg']);
clf
end
end
Това е изображението, което получавам:
ax = figure();
. - person Trogdor   schedule 05.09.2014