matlab 填充绘图,奇怪的属性

matlab fill plotting, strange properties

更新:我已经在 2014a 的 windows 8 机器上重现了这个问题。

我正在尝试使用 MATLAB(2014a,OSX Yosemite)生成大量具有不同填充颜色的正方形图像。我发现填充命令是完成此操作的最简单方法——我只需设置正方形四个角的坐标和填充颜色的 RGB 值。

然而,它并没有那么漂亮。想象一下,我只想制作三张图像,灰度值为 0.79、0.80 和 0.81。

我使用了这个代码:

figure
for fillvalue = [0.79 0.80 0.81]
%   generate stimulus
    fill([-1 1 1 -1],[-1 -1 1 1],[fillvalue fillvalue fillvalue])

%   set axis properties
    axes('Position',[.005 .005 .99 .99],'xtick',[],'ytick',[],...
        'handlevisibility','off','linewidth',2, 'visible', 'off')
    axis off

%   set figure properties
    set(gcf, 'PaperUnits','points', 'PaperPosition',...
            [0, 0, 50, 50],'papersize',[50, 50])

%   save
    filename =  char([num2str(fillvalue) '.png']);
    print(gcf,'-dpng', filename)
end

以下是文件,顺序为 (0.79, 0.80, 0.81):

Matlab在0.79和0.81上做得不错,但0.80肯定不对。同样,我不确定为什么我只在右下角得到边框。

有人知道这是怎么回事吗?

我认为这是因为图形的默认背景颜色是 [.8 .8 .8],所以出于某种原因,当您将图形的内容打印到文件时,MATLAB 会创建一个白色矩形...

输入:

get(0,'DefaultFigureColor')

你会得到:

ans =

    0.8000    0.8000    0.8000

为图形分配不同于默认颜色的颜色似乎对我有用(OSX Mountain Lion 上的 Matlab R2013a):

例如:

hFig = figure('Color',[.2 .2 .2]) %// <------  Add a background color
                                               ======================
for fillvalue = [0.79 0.80 0.81]
%   generate stimulus
    fill([-1 1 1 -1],[-1 -1 1 1],[fillvalue fillvalue fillvalue])

%   set axis properties
    axes('Position',[.005 .005 .99 .99],'xtick',[],'ytick',[],...
        'handlevisibility','off','linewidth',2, 'visible', 'off')
    axis off

%   set figure properties
    set(gcf, 'PaperUnits','points', 'PaperPosition',...
            [0, 0, 50, 50],'papersize',[50, 50])

%   save
    filename =  char([num2str(fillvalue) '.png']);
    print(gcf,'-dpng', filename)
end