1

我有一个通常运行愉快的程序,它可以获取文件、绘制它们、吐出 pdf(字母大小)。我使用注释在一组三个子图上方放置标题,并用作带有文件信息和日期的页脚。我希望标题位于页面顶部,从边缘填充到边缘,居中。

我有两种运行程序的方式:“批处理”模式和“交互”模式。在“交互”模式下,我用一个简单的figure()命令创建图形。在“批处理”模式下,我使用figure('visible','off'). 这是我制作注释的命令:

annotation(obj.hFigure(f),'textbox',[0 0.9 1 0.1],...
    'String',title,...
    'HorizontalAlignment','center',...
    'FontSize',18,...
    'LineStyle','none',...
    'FitBoxToText','off');

在这里,“obj.hFigure(f)”只是我当前正在处理的图形的句柄。如您所见,我将图形放在图形顶部附近,并确保文本超出框的底部(以防它更大)。

我的问题是上述注释的边距。在批处理模式下(没有显示数字),我在文本的两侧得到 10% 左右的边距,这破坏了布局。在交互模式下(数字显示),我没有得到边距:文本正确地从一个边缘流到另一个边缘。

我已将问题缩小到以下问题:如果我使数字可见(figure('visible','on')打开,我可以在批处理模式下获得对 ps 打印的正确响应

propertyeditor(gcf);
plotbrowser(gcf);

在绘制每个图之后。这使得程序花费大约两倍的时间(这不是什么大不了的事)。但我不明白的是:这两个命令做了什么drawnowrefresh不做什么?!

4

1 回答 1

0

我不确定您的具体情况,但是在过去遇到此类问题时,我通过明确设置图形大小取得了巨大成功:

set(gcf, 'Position', [100  100  300 300])

然后,在打印/保存之前将 PaperPositionMode 设置为 auto,这似乎会强制打印的图形与屏幕上显示的尺寸相同:

set(gcf, 'PaperPositionMode','auto')
于 2012-10-15T13:47:11.293 回答