在Matlab中调整绘图的大小,使图形不会被绘图窗口的边缘切断

时间:2012-05-23 15:23:53

标签: matlab user-interface matlab-figure

我在Matlab中创建了一个情节,但不幸的是情节的一侧被绘图窗口切断了。这是我用来创建情节的代码:

% create a plot with dots and with bold sides
point = num(:, 1);
depth = num(:, 2);
hfig = plot(point, depth, '-s', 'Color', 'k', 'MarkerFaceColor', 'k', 'MarkerEdgeColor', 'k', 'MarkerSize', 10);

% make the outside of the graph bold
set(gca, 'LineWidth', axis_size);
set(gca,'FontSize', ticksize, 'FontName', fontname);
set(gca, 'Position', [0.2 0.2 0.8 0.4])
xlabel('Point Number')
ylabel('Depth (cm)')

这是输出:

Cutoff image

注意情节的一面是如何切断的。或者,这是一张显示我想要实现的目标的图片:

What I want to achieve

我只是在没有调用set(gca, 'Position', [0.2 0.2 0.8 0.4])的情况下创建了绘图,然后通过调整窗口大小来调整绘图的大小。

但是我如何在代码中执行此操作?我还想确保我可以将绘图保存为具有相同尺寸的PNG文件。我一直在玩set()函数的各种组合,我一直无法达到我想要的目标。

3 个答案:

答案 0 :(得分:5)

尝试设置情节的OuterPosition

set(gca,'OuterPosition',[0.2 0.2 0.8 0.4]);

下图显示了两者之间的差异:

enter image description here

Here是相关的MathWorks帮助页面。

答案 1 :(得分:1)

安德烈有最简单的答案,但另外(并且从长远来看)你可以去文件交换并下载subaxis.m,它取代了子图,并且即使是单轴图也很棒(你可以定义像LeftMargin这样的属性)和RightMargin以及PaddingTop和PaddingBottom)

http://www.mathworks.com/matlabcentral/fileexchange/3696-subaxis-subplot

答案 2 :(得分:0)

以下文档(How to produce figures with Matlab that have the right dimensions when printed)提供了一些示例代码,可用于以适当的方式调整绘图大小。

使用了以下代码:

point = num(:, 1);
depth = num(:, 2);

hfig = plot(point, depth, '-s', 'Color', 'k', 'MarkerFaceColor', 'k', 'MarkerEdgeColor', 'k', 'MarkerSize', 10);
set(gca, 'LineWidth', axis_size);
set(gca,'FontSize', ticksize, 'FontName', fontname);
set(gcf,'PaperUnits','centimeters')
xSize = 30; ySize = 5;
xLeft = (21-xSize)/2; yTop = (30-ySize)/2;
set(gcf,'PaperPosition',[xLeft yTop xSize ySize])
set(gcf,'Position',[300 600 xSize*50 ySize*50])

xlabel('Point Number');
ylabel('Depth (cm)');  

这是结果的图片。这看起来类似于我在上面的问题中发布的那个。我不知道这是否取决于显示器尺寸和/或屏幕分辨率。

Expected result