Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除轴时,MATLAB PDF输出不正确_Matlab_Pdf_Postscript - Fatal编程技术网

删除轴时,MATLAB PDF输出不正确

删除轴时,MATLAB PDF输出不正确,matlab,pdf,postscript,Matlab,Pdf,Postscript,我正在尝试从一个图形生成一个PDF文件,并在MATLAB中按比例缩放。我试图隐藏图形中的轴,因为我基本上只是绘制一组矩形(一个棋盘)。每当我试图隐藏轴时(无论是set(gca,'Visible','off');还是axis off;),PDF输出都会被剪裁(我的棋盘上只显示一个矩形)。你知道为什么关掉斧头会把事情搞砸吗 这是代码--我只是想生成一个棋盘来缩放 % Create a figure to get paper sizes clear all; clf; % Use centimetr

我正在尝试从一个图形生成一个PDF文件,并在MATLAB中按比例缩放。我试图隐藏图形中的轴,因为我基本上只是绘制一组矩形(一个棋盘)。每当我试图隐藏轴时(无论是
set(gca,'Visible','off');
还是
axis off;
),PDF输出都会被剪裁(我的棋盘上只显示一个矩形)。你知道为什么关掉斧头会把事情搞砸吗

这是代码--我只是想生成一个棋盘来缩放

% Create a figure to get paper sizes
clear all;
clf;

% Use centimetres
set(gcf,'PaperUnits','centimeters');

% Get the paper dimensions
dims = get(gcf,'PaperSize');

inner_corner_x = 8;
inner_corner_y = 11;
margin = 2.5; % cm
dims = dims - 2*margin;

sz = round(min((dims(1)) / (inner_corner_x + 2), (dims(2)) / (inner_corner_y + 2)));

for i = 0:inner_corner_y
    for j = 0:inner_corner_x
        if mod(i + j, 2) == 0
            color = 'k';
        else
            color = 'w';
        end
        rectangle(...
            'Position', [j * sz i * sz sz sz],...
            'FaceColor', color,...
            'EdgeColor', color);
    end
end

% PROBLEM IS HERE
% Comment this line out to have ugly output, but at least all chessboard blocks show...
axis off;

set(gca,'LooseInset', get(gca,'TightInset'));
set(gcf,'PaperPositionMode','manual');
set(gcf,'PaperPosition',[margin margin dims]);

print -dpdf figure1

我最终手工编写了一个PostScript文件来生成棋盘。这个特定的脚本生成一个8.5英寸x 11英寸的PDF文件,其中包含7x9个框。您以点为单位设置了框大小(本例中72为1”)。很抱歉,这个答案与问题无关,但我真的无法获得如此简单的图形所需的良好输出,因此我手动完成,效果很好

%!PS
/ptsx 8.5 72 mul def
/ptsy 11  72 mul def
/boxx 7 def
/boxy 9 def
/sz 72 def

boxx sz mul ptsx gt {(Size too wide for page!) print quit} if
boxy sz mul ptsy gt {(Size too tall for page!) print quit} if

/marginx ptsx boxx sz mul sub 2 div def
/marginy ptsy boxy sz mul sub 2 div def

0 0 0 setrgbcolor
marginx marginy translate

/xval 0 def
/yval 0 def
/xon true def
/yon true def
0 1 boxy 1 sub {
  0 1 boxx 1 sub {
    newpath
    xval yval moveto
    xval yval sz add lineto
    xval sz add yval sz add lineto
    xval sz add yval lineto
    xon {fill} if
    /xval xval sz add def
    /xon xon not def
  } for
  /xval 0 def
  /yval yval sz add def
  /yon yon not def
  /xon yon def
} for

Matlab的图形导出非常混乱。我讨厌它。这不是一个直接的答案,但我通常最幸运的是先导出到EPS/EPSC,然后使用Illustrator清理图像边界并转换为PDF。但这只有在您有可以读取封装的postscript文件的辅助程序的情况下才有效。请尝试使用。
export_fig
似乎忽略了我所有的纸张大小设置。它似乎不支持以给定的比例导出,或者至少我找不到它的控件…如果你有很多图形,这将是一件痛苦的事情,但使用图形窗口中的“文件/另存为”。我用你的代码这样做会得到很好的结果。