MATLAB Subplot使图更大

时间:2014-05-28 14:43:22

标签: matlab plot size figure

我正在使用子图绘制彼此相邻的两张地图。但是,现在,图像就像这样: enter image description here

有没有办法让图片的地图部分变大?我想并排绘制地图,在这张图片中,分辨率很低,尺寸很小。

%% Graph one site at a time
nFrames = 6240; % Number of frames. 
for k = 94:nFrames 
    h11 = subplot(1,2,1); % PM2.5
    % Map of conterminous US
    ax = figure(1);
    set(ax, 'visible', 'off', 'units','normalized','outerposition',[0 0 1 1]);     
    ax = usamap('conus');
    set(ax,'Position',get(h11,'Position'));
    delete(h11);
    states = shaperead('usastatelo', 'UseGeoCoords', true,...
        'Selector',...
        {@(name) ~any(strcmp(name,{'Alaska','Hawaii'})), 'Name'});
    faceColors = makesymbolspec('Polygon',...
        {'INDEX', [1 numel(states)], 'FaceColor', 'none'}); % NOTE - colors are random
    geoshow(ax, states, 'DisplayType', 'polygon', ...
        'SymbolSpec', faceColors)
    framem off; gridm off; mlabel off; plabel off

    hold on

    % Plot data
    scatterm(ax,str2double(Lat_PM25{k})', str2double(Lon_PM25{k})', 25, str2double(data_PM25{k})', 'filled'); 

    % Colorbar
    caxis([5 30]);
    h = colorbar;
    ylabel(h,'ug/m3');

    % Title
    title(['PM2.5 24-hr Concentration ', datestr(cell2mat(date_PM25(k)), 'mmm dd yyyy')]); 

    %%%%
    h22 = subplot(1,2,2); % O3
    % Map of conterminous US
    ax2 = usamap('conus');
    set(ax2,'Position',get(h22,'Position'));
    delete(h22);
    states = shaperead('usastatelo', 'UseGeoCoords', true,...
        'Selector',...
        {@(name) ~any(strcmp(name,{'Alaska','Hawaii'})), 'Name'});
    faceColors = makesymbolspec('Polygon',...
        {'INDEX', [1 numel(states)], 'FaceColor', 'none'}); % NOTE - colors are random
    geoshow(ax2, states, 'DisplayType', 'polygon', ...
        'SymbolSpec', faceColors)
    framem off; gridm off; mlabel off; plabel off

   hold on

    % Plot data
    scatterm(ax2,str2double(Lat_O3{k})', str2double(Lon_O3{k})', 25, str2double(data_O3{k})'*1000, 'filled'); 
hold on

    % Colorbar
    caxis([10 90]);
    h = colorbar;
    ylabel(h,'ppb');

    % Title
    title(['O3 MDA8 Concentration ', datestr(cell2mat(date_O3(k)), 'mmm dd yyyy')]); % Title changes every daytitle(str);

    % Capture the frame
    mov(k) = getframe(gcf); % Makes figure window pop up

     % Save as jpg
    eval(['print -djpeg map_US_' datestr(cell2mat(date_PM25(k)),'yyyy_mm_dd') '_PM25_24hr_O3_MDA8.jpg']);

    clf

end

close(gcf)

2 个答案:

答案 0 :(得分:0)

要更改数据在图中占用的空间量,您可以使用以下命令:

set(gca,'Position',[0.1 .1 0.75 0.85])

你必须稍微玩一下这些数字才能让事情看起来不错。请注意,当您调整图形窗口的大小时,Matlab会重新调整所有内容,因此最佳数字取决于您要使用的窗口大小。

另一方面,您希望与彩色条相比,使地图更大。如果没有更改窗口大小,则无法进行此操作,因为您的地图已经像一样颜色条。我建议:

  1. 在两个图中将caxis设置为相同的范围。
  2. 删除左侧的彩条。
  3. 增加图形窗口的高度,使地图占据尽可能宽的宽度。
  4. 使用上面的命令将两张图片并排放置。
  5. 有关详细信息,请参阅Matlab Documentation on Axes Properties

    示例:

    % Default dimenstions
    figure
    x = 1:.1:4;
    y = x;
    [X, Y] = meshgrid(x,y);
    
    subplot(1,2,1)
    h = pcolor(X, Y, sin(X).*cos(Y)*2);
    set(h, 'EdgeAlpha', 0);
    axis square
    colorbar
    
    subplot(1,2,2)
    h = pcolor(X, Y, sin(Y).*cos(X));
    set(h, 'EdgeAlpha', 0);
    axis square
    colorbar
    
    
    % adjust dimensions
    subplot(1,2,1)
    set(gca, 'Position', [0.1 0.1 0.3 0.85])
    
    subplot(1,2,2)
    set(gca, 'Position', [0.55 0.1 0.3 0.85])
    

答案 1 :(得分:0)

这个blog post有很多很好的FileExchange脚本示例,用于处理子图的大小。

subplot_tight效果很好,并使子图更大。请使用subplot(1,2,1)

,而不是写入subplot_tight(1,2,1)